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
f0622c8f
Commit
f0622c8f
authored
Sep 01, 2014
by
gabi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
factory changes
parent
8e8c3937
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
44 additions
and
33 deletions
+44
-33
factory.h
include/c11log/details/factory.h
+21
-22
logger.h
include/c11log/logger.h
+23
-9
console_sinks.h
include/c11log/sinks/console_sinks.h
+0
-2
No files found.
include/c11log/details/factory.h
View file @
f0622c8f
...
...
@@ -5,9 +5,9 @@
#include <memory>
#include <mutex>
namespace
c11log
{
class
logger
;
namespace
details
{
class
factory
...
...
@@ -15,47 +15,46 @@ class factory
public
:
using
logger_ptr
=
std
::
shared_ptr
<
c11log
::
logger
>
;
using
logger_map
=
std
::
unordered_map
<
std
::
string
,
logger_ptr
>
;
void
add_logger
(
const
std
::
string
&
name
,
logger_
ptr
);
std
::
shared_ptr
<
logger
>
create_logger
(
const
std
::
string
&
name
,
logger
::
sinks_init_list
,
logger
::
formatter_ptr
=
null
ptr
);
logger_ptr
get_logger
(
const
std
::
string
&
name
);
static
c11log
::
details
::
factory
&
instance
();
static
factory
&
instance
();
private
:
std
::
mutex
_loggers_mutex
;
logger_map
_loggers
;
std
::
mutex
_factory_mutex
;
logger_map
_factory
;
};
}
}
inline
void
c11log
::
details
::
factory
::
add_logger
(
const
std
::
string
&
name
,
logger_ptr
logger_p
)
inline
std
::
shared_ptr
<
c11log
::
logger
>
c11log
::
details
::
factory
::
create_logger
(
const
std
::
string
&
name
,
logger
::
sinks_init_list
sinks
,
logger
::
formatter_ptr
formatter
)
{
std
::
lock_guard
<
std
::
mutex
>
lock
(
_loggers_mutex
);
_loggers
.
insert
(
logger_map
::
value_type
(
name
,
logger_p
));
std
::
lock_guard
<
std
::
mutex
>
lock
(
_factory_mutex
);
logger_ptr
logger_p
=
std
::
make_shared
<
logger
>
(
name
,
sinks
,
std
::
move
(
formatter
));
_factory
.
insert
(
logger_map
::
value_type
(
name
,
logger_p
));
return
logger_p
;
}
inline
c11log
::
details
::
factory
::
logger_ptr
c11log
::
details
::
factory
::
get_logger
(
const
std
::
string
&
name
)
{
std
::
lock_guard
<
std
::
mutex
>
lock
(
_
loggers
_mutex
);
std
::
lock_guard
<
std
::
mutex
>
lock
(
_
factory
_mutex
);
auto
found
=
_
loggers
.
find
(
name
);
if
(
found
!=
_
loggers
.
end
())
auto
found
=
_
factory
.
find
(
name
);
if
(
found
!=
_
factory
.
end
())
return
found
->
second
;
else
return
logger_ptr
(
nullptr
);
/*
auto found = _loggers.find(name);
if (found == _loggers.end()) {
auto new_logger_ptr = std::make_shared<c11log::logger>(name);
_loggers.insert(std::make_pair(name, new_logger_ptr));
return new_logger_ptr;
} else {
return found->second;
}*/
}
inline
c11log
::
details
::
factory
&
c11log
::
details
::
factory
::
instance
()
{
static
c11log
::
details
::
factory
instance
;
static
factory
instance
;
return
instance
;
}
include/c11log/logger.h
View file @
f0622c8f
...
...
@@ -7,9 +7,11 @@
#include<mutex>
#include<atomic>
#include <sstream>
#include "common_types.h"
#include "sinks/base_sink.h"
#include "details/factory.h"
#include "common_types.h"
//Thread safe, fast logger.
...
...
@@ -23,6 +25,9 @@ class line_logger;
template
<
std
::
size_t
>
class
fast_buf
;
}
class
logger
{
public
:
...
...
@@ -79,15 +84,28 @@ private:
};
//Get from loggers pool if exists with such name
logger
&
get_logger
(
const
std
::
string
&
name
);
std
::
shared_ptr
<
c11log
::
logger
>
create_logger
(
const
std
::
string
&
name
,
logger
::
sinks_init_list
sinks
,
logger
::
formatter_ptr
formatter
=
nullptr
);
std
::
shared_ptr
<
logger
>
get_logger
(
const
std
::
string
&
name
);
}
//
// Logger inline implementation
//
#include "details/line_logger.h"
#include "details/factory.h"
inline
std
::
shared_ptr
<
c11log
::
logger
>
c11log
::
create_logger
(
const
std
::
string
&
name
,
logger
::
sinks_init_list
sinks
,
logger
::
formatter_ptr
formatter
)
{
return
details
::
factory
::
instance
().
create_logger
(
name
,
sinks
,
std
::
move
(
formatter
));
}
inline
std
::
shared_ptr
<
c11log
::
logger
>
c11log
::
get_logger
(
const
std
::
string
&
name
)
{
return
details
::
factory
::
instance
().
get_logger
(
name
);
}
inline
c11log
::
logger
::
logger
(
const
std
::
string
&
name
,
sinks_init_list
sinks_list
,
formatter_ptr
f
)
:
...
...
@@ -215,8 +233,4 @@ inline void c11log::logger::_log_it(details::log_msg& msg)
sink
->
log
(
msg
);
}
// Static factory function
inline
c11log
::
logger
&
c11log
::
get_logger
(
const
std
::
string
&
name
)
{
return
*
(
c11log
::
details
::
factory
::
instance
().
get_logger
(
name
));
}
include/c11log/sinks/console_sinks.h
View file @
f0622c8f
...
...
@@ -43,7 +43,5 @@ inline std::shared_ptr<console_sink>& stderr_sink ()
return
inst
;
}
}
}
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