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
650486a0
Commit
650486a0
authored
Oct 14, 2014
by
gabi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
removed the use of str() in when building the log to improve perf even more
parent
41db9955
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
51 additions
and
48 deletions
+51
-48
bench.cpp
example/bench.cpp
+3
-3
fast_oss.h
include/c11log/details/fast_oss.h
+17
-7
flush_helper.h
include/c11log/details/flush_helper.h
+3
-2
line_logger.h
include/c11log/details/line_logger.h
+1
-5
log_msg.h
include/c11log/details/log_msg.h
+5
-5
pattern_formatter.h
include/c11log/details/pattern_formatter.h
+0
-0
stack_buf.h
include/c11log/details/stack_buf.h
+15
-17
logger.h
include/c11log/logger.h
+1
-4
async_sink.h
include/c11log/sinks/async_sink.h
+1
-1
file_sinks.h
include/c11log/sinks/file_sinks.h
+3
-3
ostream_sink.h
include/c11log/sinks/ostream_sink.h
+2
-1
No files found.
example/bench.cpp
View file @
650486a0
...
...
@@ -17,16 +17,16 @@ using namespace utils;
int
main
(
int
argc
,
char
*
argv
[])
{
const
unsigned
int
howmany
=
argc
<=
1
?
10
00000
:
atoi
(
argv
[
1
]);
const
unsigned
int
howmany
=
argc
<=
1
?
5
00000
:
atoi
(
argv
[
1
]);
//std::string pattern = "%Y:%m:%d %H:%M:%S.%e ---> [%n:%l] %t";
//auto formatter = std::make_shared<details::pattern_formatter>(pattern);
logger
cout_logger
(
"bench"
,
{
std
::
make_shared
<
sinks
::
stderr_sink_mt
>
()
});
cout_logger
.
info
()
<<
"Hello logger "
<<
std
::
setw
(
10
)
<<
std
::
setfill
(
'x'
)
<<
1234.55
;
cout_logger
.
info
()
<<
"Hello logger "
<<
1234
;
auto
nullsink
=
std
::
make_shared
<
sinks
::
null_sink_st
>
();
auto
rotating
=
std
::
make_shared
<
sinks
::
rotating_file_sink_mt
>
(
"myrotating"
,
"txt"
,
1024
*
1024
*
5
,
5
,
100
);
//
auto rotating = std::make_shared<sinks::rotating_file_sink_mt>("myrotating", "txt", 1024 * 1024 * 5, 5, 100);
logger
my_logger
(
"my_logger"
,
{
nullsink
});
...
...
include/c11log/details/fast_oss.h
View file @
650486a0
...
...
@@ -34,11 +34,10 @@ public:
other
.
clear
();
}
stackbuf_t
::
bufpair_t
buf
()
const
const
stackbuf_t
&
buf
()
const
{
return
_stackbuf
.
get
()
;
return
_stackbuf
;
}
std
::
size_t
size
()
const
{
return
_stackbuf
.
size
();
...
...
@@ -91,7 +90,13 @@ public:
std
::
string
str
()
{
auto
buf
=
_dev
.
buf
();
return
std
::
string
(
buf
.
first
,
buf
.
second
);
const
char
*
data
=
buf
.
data
();
return
std
::
string
(
data
,
data
+
buf
.
size
());
}
const
stack_devicebuf
::
stackbuf_t
&
buf
()
const
{
return
_dev
.
buf
();
}
...
...
@@ -111,22 +116,27 @@ public:
void
putc
(
char
c
)
{
_dev
.
sputc
(
c
);
this
->
width
(
4
);
}
// put int and pad with zeroes if smalled than min_width
void
put
_int
(
int
n
,
int
padding
)
void
write
_int
(
int
n
,
int
padding
)
{
std
::
string
s
;
details
::
fast_itostr
(
n
,
s
,
padding
);
_dev
.
sputn
(
s
.
data
(),
s
.
size
());
}
void
put
_str
(
const
std
::
string
&
s
)
void
write
_str
(
const
std
::
string
&
s
)
{
_dev
.
sputn
(
s
.
data
(),
s
.
size
());
}
void
write_fast_oss
(
const
fast_oss
&
oss
)
{
auto
buf
=
oss
.
buf
();
_dev
.
sputn
(
buf
.
data
(),
buf
.
size
());
}
private
:
stack_devicebuf
_dev
;
...
...
include/c11log/details/flush_helper.h
View file @
650486a0
...
...
@@ -16,9 +16,10 @@ public:
file_flush_helper
(
const
file_flush_helper
&
)
=
delete
;
void
write
(
const
std
::
string
&
msg
,
std
::
ofstream
&
ofs
)
void
write
(
const
log_msg
msg
,
std
::
ofstream
&
ofs
)
{
ofs
.
write
(
msg
.
data
(),
msg
.
size
());
auto
buf
=
msg
.
formatted
.
buf
();
ofs
.
write
(
buf
.
data
(),
buf
.
size
());
if
(
--
_flush_countdown
==
0
)
{
ofs
.
flush
();
...
...
include/c11log/details/line_logger.h
View file @
650486a0
...
...
@@ -19,7 +19,6 @@ public:
line_logger
(
logger
*
callback_logger
,
level
::
level_enum
msg_level
,
bool
enabled
)
:
_callback_logger
(
callback_logger
),
_log_msg
(
msg_level
),
_oss
(),
_enabled
(
enabled
)
{}
...
...
@@ -32,7 +31,6 @@ public:
line_logger
(
line_logger
&&
other
)
:
_callback_logger
(
other
.
_callback_logger
),
_log_msg
(
std
::
move
(
other
.
_log_msg
)),
_oss
(
std
::
move
(
other
.
_oss
)),
_enabled
(
other
.
_enabled
)
{
other
.
disable
();
...
...
@@ -46,7 +44,6 @@ public:
_log_msg
.
logger_name
=
_callback_logger
->
name
();
_log_msg
.
time
=
log_clock
::
now
();
_log_msg
.
tm_time
=
details
::
os
::
localtime
(
log_clock
::
to_time_t
(
_log_msg
.
time
));
_log_msg
.
raw
=
_oss
.
str
();
_callback_logger
->
_log_msg
(
_log_msg
);
}
}
...
...
@@ -56,7 +53,7 @@ public:
{
if
(
_enabled
)
{
_
oss
<<
what
;
_
log_msg
.
raw
<<
what
;
}
}
...
...
@@ -77,7 +74,6 @@ public:
private
:
logger
*
_callback_logger
;
log_msg
_log_msg
;
details
::
fast_oss
_oss
;
bool
_enabled
;
};
}
//Namespace details
...
...
include/c11log/details/log_msg.h
View file @
650486a0
#pragma once
#include <chrono>
#include "../common.h"
#include "fast_oss.h"
namespace
c11log
{
...
...
@@ -38,8 +38,8 @@ struct log_msg
swap
(
l
.
level
,
r
.
level
);
swap
(
l
.
time
,
r
.
time
);
swap
(
l
.
tm_time
,
r
.
tm_time
);
swap
(
l
.
raw
,
r
.
raw
);
swap
(
l
.
formatted
,
r
.
formatted
);
//
swap(l.raw, r.raw);
//
swap(l.formatted, r.formatted);
}
...
...
@@ -60,8 +60,8 @@ struct log_msg
level
::
level_enum
level
;
log_clock
::
time_point
time
;
std
::
tm
tm_time
;
std
::
string
raw
;
std
::
string
formatted
;
fast_oss
raw
;
fast_oss
formatted
;
};
...
...
include/c11log/details/pattern_formatter.h
View file @
650486a0
This diff is collapsed.
Click to expand it.
include/c11log/details/stack_buf.h
View file @
650486a0
...
...
@@ -15,8 +15,6 @@ template<unsigned short STACK_SIZE>
class
stack_buf
{
public
:
using
bufpair_t
=
std
::
pair
<
const
char
*
,
std
::
size_t
>
;
using
iterator
=
char
const
*
;
static
const
unsigned
short
stack_size
=
STACK_SIZE
;
stack_buf
()
:
_v
(),
_stack_size
(
0
)
{}
~
stack_buf
()
=
default
;
...
...
@@ -63,28 +61,28 @@ public:
_v
.
clear
();
}
bufpair_t
get
()
const
/* bufpair_t get() const
{
if (vector_used())
return bufpair_t(_v.data(), _v.size());
else
return bufpair_t(_stack_array.data(), _stack_size);
}*/
const
char
*
data
()
const
{
if
(
vector_used
())
return
bufpair_t
(
_v
.
data
(),
_v
.
size
()
);
return
_v
.
data
(
);
else
return
bufpair_t
(
_stack_array
.
data
(),
_stack_size
);
}
iterator
begin
()
const
{
return
get
().
first
;
}
iterator
end
()
const
{
bufpair_t
bpair
=
get
();
return
bpair
.
first
+
bpair
.
second
;
return
_stack_array
.
data
();
}
std
::
size_t
size
()
const
{
return
get
().
second
;
if
(
vector_used
())
return
_v
.
size
();
else
return
_stack_size
;
}
private
:
...
...
include/c11log/logger.h
View file @
650486a0
...
...
@@ -5,7 +5,7 @@
// Upon each log write the logger:
// 1. Checks if its log level is enough to log the message
// 2. Format the message using the formatter function
// 3. Pass the formatted message to it sinks to performa the actual logging
// 3. Pass the formatted message to it
s
sinks to performa the actual logging
#include<vector>
#include<memory>
...
...
@@ -68,8 +68,6 @@ private:
void
_log_msg
(
details
::
log_msg
&
msg
);
formatter_ptr
_default_formatter
();
const
char
*
_default_pattern
=
"[%Y:%m:%d %H:%M:%S.%e] [%n:%l] %t"
;
};
}
...
...
@@ -183,7 +181,6 @@ inline c11log::logger::formatter_ptr c11log::logger::formatter() const
}
inline
void
c11log
::
logger
::
_variadic_log
(
c11log
::
details
::
line_logger
&
)
{}
template
<
typename
First
,
typename
...
Rest
>
...
...
include/c11log/sinks/async_sink.h
View file @
650486a0
...
...
@@ -67,7 +67,7 @@ inline c11log::sinks::async_sink::~async_sink()
inline
void
c11log
::
sinks
::
async_sink
::
_sink_it
(
const
details
::
log_msg
&
msg
)
{
if
(
!
_active
||
msg
.
formatted
.
empty
()
)
if
(
!
_active
)
return
;
_q
.
push
(
msg
);
}
...
...
include/c11log/sinks/file_sinks.h
View file @
650486a0
...
...
@@ -32,7 +32,7 @@ public:
protected
:
void
_sink_it
(
const
details
::
log_msg
&
msg
)
override
{
_flush_helper
.
write
(
msg
.
formatted
,
_ofstream
);
_flush_helper
.
write
(
msg
,
_ofstream
);
}
private
:
std
::
ofstream
_ofstream
;
...
...
@@ -71,7 +71,7 @@ protected:
_rotate
();
_current_size
=
msg
.
formatted
.
size
();
}
_flush_helper
.
write
(
msg
.
formatted
,
_ofstream
);
_flush_helper
.
write
(
msg
,
_ofstream
);
}
...
...
@@ -146,7 +146,7 @@ protected:
_ofstream
.
open
(
_calc_filename
(
_base_filename
,
_extension
));
_midnight_tp
=
_calc_midnight_tp
();
}
_flush_helper
.
write
(
msg
.
formatted
,
_ofstream
);
_flush_helper
.
write
(
msg
,
_ofstream
);
}
private
:
...
...
include/c11log/sinks/ostream_sink.h
View file @
650486a0
...
...
@@ -24,7 +24,8 @@ public:
protected
:
virtual
void
_sink_it
(
const
details
::
log_msg
&
msg
)
override
{
_ostream
<<
msg
.
formatted
;
auto
buf
=
msg
.
formatted
.
buf
();
_ostream
.
write
(
buf
.
data
(),
buf
.
size
());
}
std
::
ostream
&
_ostream
;
};
...
...
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