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
72f4fae2
Commit
72f4fae2
authored
Jul 07, 2018
by
gabime
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
updated example
parent
b0bf4575
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
62 additions
and
65 deletions
+62
-65
example.cpp
example/example.cpp
+62
-65
No files found.
example/example.cpp
View file @
72f4fae2
...
...
@@ -7,17 +7,10 @@
//
//
#define SPDLOG_TRACE_ON
#define SPDLOG_DEBUG_ON
#include "spdlog/sinks/daily_file_sink.h"
#include "spdlog/sinks/stdout_color_sinks.h"
#include <iostream>
#include <memory>
void
stdout_example
();
void
basic_example
();
void
rotating_example
();
void
daily_example
();
...
...
@@ -26,42 +19,14 @@ void user_defined_example();
void
err_handler_example
();
void
syslog_example
();
namespace
spd
=
spdlog
;
#include "spdlog/spdlog.h"
int
main
(
int
,
char
*
[])
{
try
{
auto
console
=
spdlog
::
stdout_color_mt
(
"console"
);
console
->
info
(
"Welcome to spdlog!"
);
console
->
error
(
"Some error message with arg: {}"
,
1
);
// Formatting examples
console
->
warn
(
"Easy padding in numbers like {:08d}"
,
12
);
console
->
critical
(
"Support for int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}"
,
42
);
console
->
info
(
"Support for floats {:03.2f}"
,
1.23456
);
console
->
info
(
"Positional args are {1} {0}.."
,
"too"
,
"supported"
);
console
->
info
(
"{:<30}"
,
"left aligned"
);
spd
::
get
(
"console"
)
->
info
(
"loggers can be retrieved from a global registry using the spdlog::get(logger_name)"
);
// Runtime log levels
spd
::
set_level
(
spd
::
level
::
info
);
// Set global log level to info
console
->
debug
(
"This message should not be displayed!"
);
console
->
set_level
(
spd
::
level
::
trace
);
// Set specific logger's log level
console
->
debug
(
"This message should be displayed.."
);
// Customize msg format for all loggers
spd
::
set_pattern
(
"[%H:%M:%S %z] [%^---%L---%$] [thread %t] %v"
);
console
->
info
(
"This an info message with custom format"
);
// Compile time log levels
// define SPDLOG_DEBUG_ON or SPDLOG_TRACE_ON
SPDLOG_TRACE
(
console
,
"Enabled only #ifdef SPDLOG_TRACE_ON..{} ,{}"
,
1
,
3.23
);
SPDLOG_DEBUG
(
console
,
"Enabled only #ifdef SPDLOG_DEBUG_ON.. {} ,{}"
,
1
,
3.23
);
// console logging example
stdout_example
();
// various file loggers
basic_example
();
...
...
@@ -78,15 +43,14 @@ int main(int, char *[])
err_handler_example
();
// Apply a function on all registered loggers
spd
::
apply_all
([
&
](
std
::
shared_ptr
<
spdlog
::
logger
>
l
)
{
l
->
info
(
"End of example."
);
});
// apply some function on all registered loggers
spdlog
::
apply_all
([
&
](
std
::
shared_ptr
<
spdlog
::
logger
>
l
)
{
l
->
info
(
"End of example."
);
});
// Release and close all loggers
spdlog
::
drop_all
();
}
// Exceptions will only be thrown upon failed logger or sink construction (not during logging)
catch
(
const
spd
::
spdlog_ex
&
ex
)
catch
(
const
spd
log
::
spdlog_ex
&
ex
)
{
std
::
cout
<<
"Log init failed: "
<<
ex
.
what
()
<<
std
::
endl
;
return
1
;
...
...
@@ -94,48 +58,82 @@ int main(int, char *[])
}
#include "spdlog/sinks/stdout_color_sinks.h" // or "/sinks/stdout_sinks.h" if no colors needed
void
stdout_example
()
{
// create color multi threaded logger
auto
console
=
spdlog
::
stdout_color_mt
(
"console"
);
console
->
info
(
"Welcome to spdlog!"
);
console
->
error
(
"Some error message with arg: {}"
,
1
);
auto
err_logger
=
spdlog
::
stderr_color_mt
(
"error_logger"
);
err_logger
->
error
(
"Some error message"
);
// Formatting examples
console
->
warn
(
"Easy padding in numbers like {:08d}"
,
12
);
console
->
critical
(
"Support for int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}"
,
42
);
console
->
info
(
"Support for floats {:03.2f}"
,
1.23456
);
console
->
info
(
"Positional args are {1} {0}.."
,
"too"
,
"supported"
);
console
->
info
(
"{:<30}"
,
"left aligned"
);
spdlog
::
get
(
"console"
)
->
info
(
"loggers can be retrieved from a global registry using the spdlog::get(logger_name)"
);
// Runtime log levels
spdlog
::
set_level
(
spdlog
::
level
::
info
);
// Set global log level to info
console
->
debug
(
"This message should not be displayed!"
);
console
->
set_level
(
spdlog
::
level
::
trace
);
// Set specific logger's log level
console
->
debug
(
"This message should be displayed.."
);
// Customize msg format for all loggers
spdlog
::
set_pattern
(
"[%H:%M:%S %z] [%^---%L---%$] [thread %t] %v"
);
console
->
info
(
"This an info message with custom format"
);
// Compile time log levels
// define SPDLOG_DEBUG_ON or SPDLOG_TRACE_ON
SPDLOG_TRACE
(
console
,
"Enabled only #ifdef SPDLOG_TRACE_ON..{} ,{}"
,
1
,
3.23
);
SPDLOG_DEBUG
(
console
,
"Enabled only #ifdef SPDLOG_DEBUG_ON.. {} ,{}"
,
1
,
3.23
);
}
#include "spdlog/sinks/basic_file_sink.h"
void
basic_example
()
{
// Create basic file logger (not rotated)
auto
my_logger
=
spd
::
basic_logger_mt
(
"basic_logger"
,
"logs/basic-log.txt"
);
auto
my_logger
=
spd
log
::
basic_logger_mt
(
"basic_logger"
,
"logs/basic-log.txt"
);
}
#include "spdlog/sinks/rotating_file_sink.h"
void
rotating_example
()
{
// Create a file rotating logger with 5mb size max and 3 rotated files
auto
rotating_logger
=
spd
::
rotating_logger_mt
(
"some_logger_name"
,
"logs/rotating.txt"
,
1048576
*
5
,
3
);
auto
rotating_logger
=
spd
log
::
rotating_logger_mt
(
"some_logger_name"
,
"logs/rotating.txt"
,
1048576
*
5
,
3
);
}
#include "spdlog/sinks/daily_file_sink.h"
void
daily_example
()
{
// Create a daily logger - a new file is created every day on 2:30am
auto
daily_logger
=
spd
::
daily_logger_mt
(
"daily_logger"
,
"logs/daily.txt"
,
2
,
30
);
auto
daily_logger
=
spd
log
::
daily_logger_mt
(
"daily_logger"
,
"logs/daily.txt"
,
2
,
30
);
}
#include "spdlog/async.h"
void
async_example
()
{
// default thread pool settings can be modified *before* creating the async logger:
// spdlog::init_thread_pool(32768, 1); // queue with max 32k items 1 backing thread.
// spdlog::init_thread_pool(32768, 4); // queue with max 32k items 4 backing threads.
auto
async_file
=
spd
::
basic_logger_mt
<
spdlog
::
async_factory
>
(
"async_file_logger"
,
"logs/async_log.txt"
);
auto
async_file
=
spdlog
::
basic_logger_mt
<
spdlog
::
async_factory
>
(
"async_file_logger"
,
"logs/async_log.txt"
);
// alternatively:
// auto async_file = spd
::create_async<spd
::sinks::basic_file_sink_mt>("async_file_logger", "logs/async_log.txt");
// auto async_file = spd
log::create_async<spdlog
::sinks::basic_file_sink_mt>("async_file_logger", "logs/async_log.txt");
for
(
int
i
=
0
;
i
<
100
;
++
i
)
for
(
int
i
=
1
;
i
<
101
;
++
i
)
{
async_file
->
info
(
"Async message #{}"
,
i
+
1
);
async_file
->
info
(
"Async message #{}"
,
i
);
}
}
...
...
@@ -156,7 +154,7 @@ struct my_type
void
user_defined_example
()
{
spd
::
get
(
"console"
)
->
info
(
"user defined type: {}"
,
my_type
{
14
});
spd
log
::
get
(
"console"
)
->
info
(
"user defined type: {}"
,
my_type
{
14
});
}
//
...
...
@@ -164,10 +162,9 @@ void user_defined_example()
//
void
err_handler_example
()
{
// can be set globaly or per logger(logger->set_error_handler(..))
spdlog
::
set_error_handler
([](
const
std
::
string
&
msg
)
{
spd
::
get
(
"console"
)
->
error
(
"*******my err handler: {}"
,
msg
);
});
spd
::
get
(
"console"
)
->
info
(
"some invalid message to trigger an error {}{}{}{}"
,
3
);
// spd::get("console")->info("some invalid message to trigger an error {}{}{}{}", 3);
// can be set globally or per logger(logger->set_error_handler(..))
spdlog
::
set_error_handler
([](
const
std
::
string
&
msg
)
{
spdlog
::
get
(
"console"
)
->
error
(
"*** LOGGER ERROR ***: {}"
,
msg
);
});
spdlog
::
get
(
"console"
)
->
info
(
"some invalid message to trigger an error {}{}{}{}"
,
3
);
}
...
...
@@ -177,7 +174,7 @@ void err_handler_example()
void
syslog_example
()
{
std
::
string
ident
=
"spdlog-example"
;
auto
syslog_logger
=
spd
::
syslog_logger
(
"syslog"
,
ident
,
LOG_PID
);
auto
syslog_logger
=
spd
log
::
syslog_logger
(
"syslog"
,
ident
,
LOG_PID
);
syslog_logger
->
warn
(
"This is warning that will end up in syslog."
);
}
#endif
...
...
@@ -188,7 +185,7 @@ void syslog_example()
void
android_example
()
{
std
::
string
tag
=
"spdlog-android"
;
auto
android_logger
=
spd
::
android_logger
(
"android"
,
tag
);
auto
android_logger
=
spd
log
::
android_logger
(
"android"
,
tag
);
android_logger
->
critical
(
"Use
\"
adb shell logcat
\"
to view this message."
);
}
...
...
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