Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
S
spdlog
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
spdlog
Commits
b368d18b
Commit
b368d18b
authored
Oct 12, 2018
by
gabime
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added default logger API
parent
8e4996ba
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
29 changed files
with
335 additions
and
34 deletions
+335
-34
.clang-format
.clang-format
+1
-1
CMakeLists.txt
CMakeLists.txt
+1
-1
async_bench.cpp
bench/async_bench.cpp
+2
-1
bench.cpp
bench/bench.cpp
+2
-1
latency.cpp
bench/latency.cpp
+3
-1
example.cpp
example/example.cpp
+0
-0
multisink.cpp
example/multisink.cpp
+2
-1
default_logger.h
include/spdlog/default_logger.h
+0
-0
os.h
include/spdlog/details/os.h
+0
-0
pattern_formatter.h
include/spdlog/details/pattern_formatter.h
+3
-0
registry.h
include/spdlog/details/registry.h
+38
-0
android_sink.h
include/spdlog/sinks/android_sink.h
+4
-0
ansicolor_sink.h
include/spdlog/sinks/ansicolor_sink.h
+4
-0
basic_file_sink.h
include/spdlog/sinks/basic_file_sink.h
+5
-1
daily_file_sink.h
include/spdlog/sinks/daily_file_sink.h
+5
-1
dist_sink.h
include/spdlog/sinks/dist_sink.h
+4
-0
msvc_sink.h
include/spdlog/sinks/msvc_sink.h
+4
-0
null_sink.h
include/spdlog/sinks/null_sink.h
+17
-0
ostream_sink.h
include/spdlog/sinks/ostream_sink.h
+4
-0
rotating_file_sink.h
include/spdlog/sinks/rotating_file_sink.h
+5
-1
stdout_color_sinks.h
include/spdlog/sinks/stdout_color_sinks.h
+4
-1
stdout_sinks.h
include/spdlog/sinks/stdout_sinks.h
+4
-1
syslog_sink.h
include/spdlog/sinks/syslog_sink.h
+4
-1
wincolor_sink.h
include/spdlog/sinks/wincolor_sink.h
+4
-0
spdlog.h
include/spdlog/spdlog.h
+161
-10
version.h
include/spdlog/version.h
+1
-1
includes.h
tests/includes.h
+1
-1
registry.cpp
tests/registry.cpp
+13
-10
test_misc.cpp
tests/test_misc.cpp
+39
-0
No files found.
.clang-format
View file @
b368d18b
...
...
@@ -88,7 +88,7 @@ PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 60
PointerAlignment: Right
ReflowComments: true
SortIncludes:
tru
e
SortIncludes:
fals
e
SortUsingDeclarations: true
SpaceAfterCStyleCast: false
SpaceAfterTemplateKeyword: false
...
...
CMakeLists.txt
View file @
b368d18b
...
...
@@ -4,7 +4,7 @@
#
cmake_minimum_required
(
VERSION 3.1
)
project
(
spdlog VERSION 1.
2
.0 LANGUAGES CXX
)
project
(
spdlog VERSION 1.
3
.0 LANGUAGES CXX
)
include
(
CTest
)
include
(
CMakeDependentOption
)
include
(
GNUInstallDirs
)
...
...
bench/async_bench.cpp
View file @
b368d18b
...
...
@@ -6,10 +6,11 @@
//
// bench.cpp : spdlog benchmarks
//
#include "spdlog/spdlog.h"
#include "spdlog/async.h"
#include "spdlog/sinks/basic_file_sink.h"
#include "spdlog/sinks/stdout_color_sinks.h"
#include "spdlog/spdlog.h"
#include "utils.h"
#include <atomic>
#include <iostream>
...
...
bench/bench.cpp
View file @
b368d18b
...
...
@@ -6,12 +6,13 @@
//
// bench.cpp : spdlog benchmarks
//
#include "spdlog/spdlog.h"
#include "spdlog/async.h"
#include "spdlog/sinks/basic_file_sink.h"
#include "spdlog/sinks/daily_file_sink.h"
#include "spdlog/sinks/null_sink.h"
#include "spdlog/sinks/rotating_file_sink.h"
#include "spdlog/spdlog.h"
#include "utils.h"
#include <atomic>
#include <cstdlib> // EXIT_FAILURE
...
...
bench/latency.cpp
View file @
b368d18b
...
...
@@ -6,12 +6,14 @@
//
// latency.cpp : spdlog latency benchmarks
//
#include "spdlog/spdlog.h"
#include "spdlog/async.h"
#include "spdlog/sinks/basic_file_sink.h"
#include "spdlog/sinks/daily_file_sink.h"
#include "spdlog/sinks/null_sink.h"
#include "spdlog/sinks/rotating_file_sink.h"
#include "spdlog/spdlog.h"
#include "utils.h"
#include <atomic>
#include <cstdlib>
...
...
example/example.cpp
View file @
b368d18b
This diff is collapsed.
Click to expand it.
example/multisink.cpp
View file @
b368d18b
#include "spdlog/spdlog.h"
#include "spdlog/sinks/basic_file_sink.h"
#include "spdlog/sinks/stdout_sinks.h"
#include "spdlog/spdlog.h"
#include <iostream>
#include <memory>
...
...
include/spdlog/default_logger.h
deleted
100644 → 0
View file @
8e4996ba
include/spdlog/details/os.h
View file @
b368d18b
include/spdlog/details/pattern_formatter.h
View file @
b368d18b
...
...
@@ -508,10 +508,13 @@ class full_formatter final : public flag_formatter
#endif
#ifndef SPDLOG_NO_NAME
if
(
!
msg
.
logger_name
->
empty
())
{
dest
.
push_back
(
'['
);
fmt_helper
::
append_str
(
*
msg
.
logger_name
,
dest
);
dest
.
push_back
(
']'
);
dest
.
push_back
(
' '
);
}
#endif
dest
.
push_back
(
'['
);
...
...
include/spdlog/details/registry.h
View file @
b368d18b
...
...
@@ -14,6 +14,14 @@
#include "spdlog/details/periodic_worker.h"
#include "spdlog/logger.h"
// support for the default stdout color logger
#ifdef _WIN32
#include "spdlog/sinks/wincolor_sink.h"
#else
#include "spdlog/sinks/ansicolor_sink.h"
#endif
#include <chrono>
#include <functional>
#include <memory>
...
...
@@ -66,6 +74,25 @@ public:
return
found
==
loggers_
.
end
()
?
nullptr
:
found
->
second
;
}
std
::
shared_ptr
<
logger
>
get_default_logger
()
const
{
return
default_logger_
;
}
// set default logger.
// default logger is stored in default_logger_ (for faster retrieval) and in the map of existing loggers.
void
set_default_logger
(
std
::
shared_ptr
<
logger
>
new_default_logger
)
{
std
::
lock_guard
<
std
::
mutex
>
lock
(
logger_map_mutex_
);
// remove previous default logger from the map
if
(
default_logger_
!=
nullptr
)
{
loggers_
.
erase
(
default_logger_
->
name
());
}
loggers_
[
new_default_logger
->
name
()]
=
new_default_logger
;
default_logger_
=
std
::
move
(
new_default_logger
);
}
void
set_tp
(
std
::
shared_ptr
<
thread_pool
>
tp
)
{
std
::
lock_guard
<
std
::
recursive_mutex
>
lock
(
tp_mutex_
);
...
...
@@ -154,6 +181,7 @@ public:
{
std
::
lock_guard
<
std
::
mutex
>
lock
(
logger_map_mutex_
);
loggers_
.
clear
();
default_logger_
.
reset
();
}
// clean all reasources and threads started by the registry
...
...
@@ -187,6 +215,15 @@ private:
registry
()
:
formatter_
(
new
pattern_formatter
(
"%+"
))
{
// create default logger (stdout_color_mt).
#ifdef _WIN32
auto
color_sink
=
std
::
make_shared
<
sinks
::
wincolor_stdout_sink_mt
>
();
#else
auto
color_sink
=
std
::
make_shared
<
sinks
::
ansicolor_stdout_sink_mt
>
();
#endif
SPDLOG_CONSTEXPR
const
char
*
default_logger_name
=
""
;
default_logger_
=
std
::
make_shared
<
spdlog
::
logger
>
(
default_logger_name
,
std
::
move
(
color_sink
));
loggers_
[
default_logger_name
]
=
default_logger_
;
}
~
registry
()
=
default
;
...
...
@@ -208,6 +245,7 @@ private:
log_err_handler
err_handler_
;
std
::
shared_ptr
<
thread_pool
>
tp_
;
std
::
unique_ptr
<
periodic_worker
>
periodic_flusher_
;
std
::
shared_ptr
<
logger
>
default_logger_
;
};
}
// namespace details
...
...
include/spdlog/sinks/android_sink.h
View file @
b368d18b
...
...
@@ -5,6 +5,10 @@
#pragma once
#ifndef SPDLOG_H
#error "spdlog.h must be included before this file."
#endif
#include "spdlog/details/fmt_helper.h"
#include "spdlog/details/null_mutex.h"
#include "spdlog/details/os.h"
...
...
include/spdlog/sinks/ansicolor_sink.h
View file @
b368d18b
...
...
@@ -5,6 +5,10 @@
#pragma once
#ifndef SPDLOG_H
#error "spdlog.h must be included before this file."
#endif
#include "spdlog/details/console_globals.h"
#include "spdlog/details/null_mutex.h"
#include "spdlog/details/os.h"
...
...
include/spdlog/sinks/basic_file_sink.h
View file @
b368d18b
...
...
@@ -4,10 +4,14 @@
//
#pragma once
#ifndef SPDLOG_H
#error "spdlog.h must be included before this file."
#endif
#include "spdlog/details/file_helper.h"
#include "spdlog/details/null_mutex.h"
#include "spdlog/sinks/base_sink.h"
#include "spdlog/spdlog.h"
#include <mutex>
#include <string>
...
...
include/spdlog/sinks/daily_file_sink.h
View file @
b368d18b
...
...
@@ -4,11 +4,15 @@
//
#pragma once
#ifndef SPDLOG_H
#error "spdlog.h must be included before this file."
#endif
#include "spdlog/details/file_helper.h"
#include "spdlog/details/null_mutex.h"
#include "spdlog/fmt/fmt.h"
#include "spdlog/sinks/base_sink.h"
#include "spdlog/spdlog.h"
#include <chrono>
#include <cstdio>
...
...
include/spdlog/sinks/dist_sink.h
View file @
b368d18b
...
...
@@ -5,6 +5,10 @@
#pragma once
#ifndef SPDLOG_H
#error "spdlog.h must be included before this file."
#endif
#include "base_sink.h"
#include "spdlog/details/log_msg.h"
#include "spdlog/details/null_mutex.h"
...
...
include/spdlog/sinks/msvc_sink.h
View file @
b368d18b
...
...
@@ -5,6 +5,10 @@
#pragma once
#ifndef SPDLOG_H
#error "spdlog.h must be included before this file."
#endif
#if defined(_WIN32)
#include "spdlog/details/null_mutex.h"
...
...
include/spdlog/sinks/null_sink.h
View file @
b368d18b
...
...
@@ -5,6 +5,10 @@
#pragma once
#ifndef SPDLOG_H
#error "spdlog.h must be included before this file."
#endif
#include "spdlog/details/null_mutex.h"
#include "spdlog/sinks/base_sink.h"
...
...
@@ -25,4 +29,17 @@ using null_sink_mt = null_sink<std::mutex>;
using
null_sink_st
=
null_sink
<
details
::
null_mutex
>
;
}
// namespace sinks
template
<
typename
Factory
=
default_factory
>
inline
std
::
shared_ptr
<
logger
>
null_logger_mt
(
const
std
::
string
&
logger_name
)
{
return
Factory
::
template
create
<
sinks
::
null_sink_mt
>
(
logger_name
);
}
template
<
typename
Factory
=
default_factory
>
inline
std
::
shared_ptr
<
logger
>
null_logger_st
(
const
std
::
string
&
logger_name
)
{
return
Factory
::
template
create
<
sinks
::
null_sink_st
>
(
logger_name
);
}
}
// namespace spdlog
include/spdlog/sinks/ostream_sink.h
View file @
b368d18b
...
...
@@ -5,6 +5,10 @@
#pragma once
#ifndef SPDLOG_H
#error "spdlog.h must be included before this file."
#endif
#include "spdlog/details/null_mutex.h"
#include "spdlog/sinks/base_sink.h"
...
...
include/spdlog/sinks/rotating_file_sink.h
View file @
b368d18b
...
...
@@ -4,11 +4,15 @@
//
#pragma once
#ifndef SPDLOG_H
#error "spdlog.h must be included before this file."
#endif
#include "spdlog/details/file_helper.h"
#include "spdlog/details/null_mutex.h"
#include "spdlog/fmt/fmt.h"
#include "spdlog/sinks/base_sink.h"
#include "spdlog/spdlog.h"
#include <cerrno>
#include <chrono>
...
...
include/spdlog/sinks/stdout_color_sinks.h
View file @
b368d18b
...
...
@@ -5,7 +5,10 @@
#pragma once
#include "spdlog/spdlog.h"
#ifndef SPDLOG_H
#error "spdlog.h must be included before this file."
#endif
#ifdef _WIN32
#include "spdlog/sinks/wincolor_sink.h"
#else
...
...
include/spdlog/sinks/stdout_sinks.h
View file @
b368d18b
...
...
@@ -5,9 +5,12 @@
#pragma once
#ifndef SPDLOG_H
#error "spdlog.h must be included before this file."
#endif
#include "spdlog/details/console_globals.h"
#include "spdlog/details/null_mutex.h"
#include "spdlog/spdlog.h"
#include <cstdio>
#include <memory>
...
...
include/spdlog/sinks/syslog_sink.h
View file @
b368d18b
...
...
@@ -5,8 +5,11 @@
#pragma once
#ifndef SPDLOG_H
#error "spdlog.h must be included before this file."
#endif
#include "spdlog/sinks/base_sink.h"
#include "spdlog/spdlog.h"
#include <array>
#include <string>
...
...
include/spdlog/sinks/wincolor_sink.h
View file @
b368d18b
...
...
@@ -5,6 +5,10 @@
#pragma once
#ifndef SPDLOG_H
#error "spdlog.h must be included before this file."
#endif
#include "spdlog/common.h"
#include "spdlog/details/console_globals.h"
#include "spdlog/details/null_mutex.h"
...
...
include/spdlog/spdlog.h
View file @
b368d18b
...
...
@@ -14,8 +14,6 @@
#include "spdlog/logger.h"
#include "spdlog/version.h"
#include "spdlog/default_logger.h"
#include <chrono>
#include <functional>
#include <memory>
...
...
@@ -128,19 +126,173 @@ inline void shutdown()
details
::
registry
::
instance
().
shutdown
();
}
///////////////////////////////////////////////////////////////////////////////
//
// Trace & Debug can be switched on/off at compile time for zero cost debug
// statements.
// API for using default logger (stdout_color_mt),
// e.g: spdlog::info("Message {}", 1);
//
// The default logger object can be accessed using the spdlog::get():
// For example, to add another sink to it:
// spdlog::get()->sinks()->push_back(some_sink);
//
// The default logger can replaced using spdlog::set_default_logger(new_logger).
// For example, to replace it with a file logger:
// spdlog::set_default_logger(std::move(spdlog::basic_logger_st("mylog.txt"));
//
// Return the default logger
// inline std::shared_ptr<spdlog::logger> get()
//{
// return details::registry::instance().get_default_logger();
//}
inline
std
::
shared_ptr
<
spdlog
::
logger
>
get
()
{
return
details
::
registry
::
instance
().
get_default_logger
();
}
inline
void
set_default_logger
(
std
::
shared_ptr
<
spdlog
::
logger
>
default_logger
)
{
details
::
registry
::
instance
().
set_default_logger
(
std
::
move
(
default_logger
));
}
template
<
typename
...
Args
>
inline
void
log
(
level
::
level_enum
lvl
,
const
char
*
fmt
,
const
Args
&
...
args
)
{
get
()
->
log
(
lvl
,
fmt
,
args
...);
}
template
<
typename
...
Args
>
inline
void
trace
(
const
char
*
fmt
,
const
Args
&
...
args
)
{
get
()
->
trace
(
fmt
,
args
...);
}
template
<
typename
...
Args
>
inline
void
debug
(
const
char
*
fmt
,
const
Args
&
...
args
)
{
get
()
->
debug
(
fmt
,
args
...);
}
template
<
typename
...
Args
>
inline
void
info
(
const
char
*
fmt
,
const
Args
&
...
args
)
{
get
()
->
info
(
fmt
,
args
...);
}
template
<
typename
...
Args
>
inline
void
warn
(
const
char
*
fmt
,
const
Args
&
...
args
)
{
get
()
->
warn
(
fmt
,
args
...);
}
template
<
typename
...
Args
>
inline
void
error
(
const
char
*
fmt
,
const
Args
&
...
args
)
{
get
()
->
error
(
fmt
,
args
...);
}
template
<
typename
...
Args
>
inline
void
critical
(
const
char
*
fmt
,
const
Args
&
...
args
)
{
get
()
->
critical
(
fmt
,
args
...);
}
template
<
typename
T
>
inline
void
log
(
level
::
level_enum
lvl
,
const
T
&
msg
)
{
get
()
->
log
(
lvl
,
msg
);
}
template
<
typename
T
>
inline
void
trace
(
const
T
&
msg
)
{
get
()
->
trace
(
msg
);
}
template
<
typename
T
>
inline
void
debug
(
const
T
&
msg
)
{
get
()
->
debug
(
msg
);
}
template
<
typename
T
>
inline
void
info
(
const
T
&
msg
)
{
get
()
->
info
(
msg
);
}
template
<
typename
T
>
inline
void
warn
(
const
T
&
msg
)
{
get
()
->
warn
(
msg
);
}
template
<
typename
T
>
inline
void
error
(
const
T
&
msg
)
{
get
()
->
error
(
msg
);
}
template
<
typename
T
>
inline
void
critical
(
const
T
&
msg
)
{
get
()
->
critical
(
msg
);
}
#ifdef SPDLOG_WCHAR_TO_UTF8_SUPPORT
template
<
typename
...
Args
>
inline
void
log
(
level
::
level_enum
lvl
,
const
wchar_t
*
fmt
,
const
Args
&
...
args
)
{
get
()
->
log
(
lvl
,
fmt
,
args
...);
}
template
<
typename
...
Args
>
inline
void
trace
(
const
wchar_t
*
fmt
,
const
Args
&
...
args
)
{
get
()
->
trace
(
fmt
,
args
...);
}
template
<
typename
...
Args
>
inline
void
debug
(
const
wchar_t
*
fmt
,
const
Args
&
...
args
)
{
get
()
->
debug
(
fmt
,
args
...);
}
template
<
typename
...
Args
>
inline
void
info
(
const
wchar_t
*
fmt
,
const
Args
&
...
args
)
{
get
()
->
info
(
fmt
,
args
...);
}
template
<
typename
...
Args
>
inline
void
warn
(
const
wchar_t
*
fmt
,
const
Args
&
...
args
)
{
get
()
->
warn
(
fmt
,
args
...);
}
template
<
typename
...
Args
>
inline
void
error
(
const
wchar_t
*
fmt
,
const
Args
&
...
args
)
{
get
()
->
error
(
fmt
,
args
...);
}
template
<
typename
...
Args
>
inline
void
critical
(
const
wchar_t
*
fmt
,
const
Args
&
...
args
)
{
get
()
->
critical
(
fmt
,
args
...);
}
#endif // SPDLOG_WCHAR_TO_UTF8_SUPPORT
//
// Trace & Debug can be switched on/off at compile time with zero cost.
// Uncomment SPDLOG_DEBUG_ON/SPDLOG_TRACE_ON in tweakme.h to enable.
// SPDLOG_TRACE(..) will also print current file and line.
//
// Example:
// spdlog::set_level(spdlog::level::trace);
// SPDLOG_TRACE(my_logger, "some trace message");
// SPDLOG_TRACE(my_logger, "another trace message {} {}", 1, 2);
// SPDLOG_DEBUG(my_logger, "some debug message {} {}", 3, 4);
///////////////////////////////////////////////////////////////////////////////
//
#ifdef SPDLOG_TRACE_ON
#define SPDLOG_STR_H(x) #x
...
...
@@ -165,5 +317,4 @@ inline void shutdown()
#endif
}
// namespace spdlog
#endif // #define SPDLOG_H
#endif // SPDLOG_H
include/spdlog/version.h
View file @
b368d18b
...
...
@@ -6,7 +6,7 @@
#pragma once
#define SPDLOG_VER_MAJOR 1
#define SPDLOG_VER_MINOR
2
#define SPDLOG_VER_MINOR
3
#define SPDLOG_VER_PATCH 0
#define SPDLOG_VERSION (SPDLOG_VER_MAJOR * 10000 + SPDLOG_VER_MINOR * 100 + SPDLOG_VER_PATCH)
tests/includes.h
View file @
b368d18b
...
...
@@ -14,6 +14,7 @@
#define SPDLOG_DEBUG_ON
#define SPDLOG_ENABLE_MESSAGE_COUNTER
#include "spdlog/spdlog.h"
#include "spdlog/async.h"
#include "spdlog/sinks/basic_file_sink.h"
#include "spdlog/sinks/daily_file_sink.h"
...
...
@@ -21,4 +22,3 @@
#include "spdlog/sinks/ostream_sink.h"
#include "spdlog/sinks/rotating_file_sink.h"
#include "spdlog/sinks/stdout_color_sinks.h"
#include "spdlog/spdlog.h"
tests/registry.cpp
View file @
b368d18b
...
...
@@ -12,8 +12,7 @@ TEST_CASE("register_drop", "[registry]")
REQUIRE_THROWS_AS
(
spdlog
::
create
<
spdlog
::
sinks
::
null_sink_mt
>
(
tested_logger_name
),
const
spdlog
::
spdlog_ex
&
);
}
TEST_CASE
(
"explicit register"
"[registry]"
)
TEST_CASE
(
"explicit register"
,
"[registry]"
)
{
spdlog
::
drop_all
();
auto
logger
=
std
::
make_shared
<
spdlog
::
logger
>
(
tested_logger_name
,
std
::
make_shared
<
spdlog
::
sinks
::
null_sink_st
>
());
...
...
@@ -23,8 +22,7 @@ TEST_CASE("explicit register"
REQUIRE_THROWS_AS
(
spdlog
::
create
<
spdlog
::
sinks
::
null_sink_mt
>
(
tested_logger_name
),
const
spdlog
::
spdlog_ex
&
);
}
TEST_CASE
(
"apply_all"
"[registry]"
)
TEST_CASE
(
"apply_all"
,
"[registry]"
)
{
spdlog
::
drop_all
();
auto
logger
=
std
::
make_shared
<
spdlog
::
logger
>
(
tested_logger_name
,
std
::
make_shared
<
spdlog
::
sinks
::
null_sink_st
>
());
...
...
@@ -45,8 +43,7 @@ TEST_CASE("apply_all"
REQUIRE
(
counter
==
1
);
}
TEST_CASE
(
"drop"
"[registry]"
)
TEST_CASE
(
"drop"
,
"[registry]"
)
{
spdlog
::
drop_all
();
spdlog
::
create
<
spdlog
::
sinks
::
null_sink_mt
>
(
tested_logger_name
);
...
...
@@ -54,8 +51,7 @@ TEST_CASE("drop"
REQUIRE_FALSE
(
spdlog
::
get
(
tested_logger_name
));
}
TEST_CASE
(
"drop_all"
"[registry]"
)
TEST_CASE
(
"drop_all"
,
"[registry]"
)
{
spdlog
::
drop_all
();
spdlog
::
create
<
spdlog
::
sinks
::
null_sink_mt
>
(
tested_logger_name
);
...
...
@@ -65,8 +61,7 @@ TEST_CASE("drop_all"
REQUIRE_FALSE
(
spdlog
::
get
(
tested_logger_name2
));
}
TEST_CASE
(
"drop non existing"
"[registry]"
)
TEST_CASE
(
"drop non existing"
,
"[registry]"
)
{
spdlog
::
drop_all
();
spdlog
::
create
<
spdlog
::
sinks
::
null_sink_mt
>
(
tested_logger_name
);
...
...
@@ -75,3 +70,11 @@ TEST_CASE("drop non existing"
REQUIRE
(
spdlog
::
get
(
tested_logger_name
));
spdlog
::
drop_all
();
}
TEST_CASE
(
"default logger"
,
"[registry]"
)
{
spdlog
::
drop_all
();
spdlog
::
set_default_logger
(
std
::
move
(
spdlog
::
null_logger_st
(
tested_logger_name
)));
REQUIRE
(
spdlog
::
get
(
tested_logger_name
)
==
spdlog
::
get
());
spdlog
::
drop_all
();
}
tests/test_misc.cpp
View file @
b368d18b
...
...
@@ -191,3 +191,42 @@ TEST_CASE("message_counter", "[message_counter]")
REQUIRE
(
oss
.
str
()
==
"000002 Hello again"
+
std
::
string
(
spdlog
::
details
::
os
::
default_eol
));
}
TEST_CASE
(
"default logger API"
,
"[default logger]"
)
{
std
::
ostringstream
oss
;
auto
oss_sink
=
std
::
make_shared
<
spdlog
::
sinks
::
ostream_sink_mt
>
(
oss
);
spdlog
::
set_default_logger
(
std
::
make_shared
<
spdlog
::
logger
>
(
"oss"
,
oss_sink
));
spdlog
::
get
()
->
set_pattern
(
"%v"
);
spdlog
::
get
()
->
set_level
(
spdlog
::
level
::
trace
);
spdlog
::
trace
(
"hello trace"
);
REQUIRE
(
oss
.
str
()
==
"hello trace"
+
std
::
string
(
spdlog
::
details
::
os
::
default_eol
));
oss
.
str
(
""
);
spdlog
::
debug
(
"hello debug"
);
REQUIRE
(
oss
.
str
()
==
"hello debug"
+
std
::
string
(
spdlog
::
details
::
os
::
default_eol
));
oss
.
str
(
""
);
spdlog
::
info
(
"Hello"
);
REQUIRE
(
oss
.
str
()
==
"Hello"
+
std
::
string
(
spdlog
::
details
::
os
::
default_eol
));
oss
.
str
(
""
);
spdlog
::
warn
(
"Hello again {}"
,
2
);
REQUIRE
(
oss
.
str
()
==
"Hello again 2"
+
std
::
string
(
spdlog
::
details
::
os
::
default_eol
));
oss
.
str
(
""
);
spdlog
::
error
(
123
);
REQUIRE
(
oss
.
str
()
==
"123"
+
std
::
string
(
spdlog
::
details
::
os
::
default_eol
));
oss
.
str
(
""
);
spdlog
::
critical
(
std
::
string
(
"some string"
));
REQUIRE
(
oss
.
str
()
==
"some string"
+
std
::
string
(
spdlog
::
details
::
os
::
default_eol
));
oss
.
str
(
""
);
spdlog
::
set_level
(
spdlog
::
level
::
info
);
spdlog
::
debug
(
"should not be logged"
);
REQUIRE
(
oss
.
str
().
empty
());
spdlog
::
drop_all
();
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment