Skip to content
Snippets Groups Projects
Verified Commit e1c57a55 authored by Alberto Miranda's avatar Alberto Miranda :hotsprings:
Browse files

WIP: fix logger (merge with previous)

parent 0ad18d79
No related branches found
No related tags found
1 merge request!92Resolve "Adhoc storage deployment needs to be executed by `scord-ctl` instead of `scord`"
...@@ -49,6 +49,8 @@ logger_setup(const char* ident, logger_type type, const char* log_file) { ...@@ -49,6 +49,8 @@ logger_setup(const char* ident, logger_type type, const char* log_file) {
void void
logger_log(enum logger_level level, const char* fmt, ...) { logger_log(enum logger_level level, const char* fmt, ...) {
using logger::logger;
if(const auto logger = logger::get_global_logger(); logger) { if(const auto logger = logger::get_global_logger(); logger) {
std::array<char, LOGGER_MSG_MAX_LEN> msg; // NOLINT std::array<char, LOGGER_MSG_MAX_LEN> msg; // NOLINT
...@@ -79,7 +81,9 @@ logger_log(enum logger_level level, const char* fmt, ...) { ...@@ -79,7 +81,9 @@ logger_log(enum logger_level level, const char* fmt, ...) {
void void
logger_destroy() { logger_destroy() {
using logger::logger;
if(logger::get_global_logger()) { if(logger::get_global_logger()) {
logger::destroy_global_logger(); ::logger::destroy_global_logger();
} }
} }
...@@ -165,6 +165,12 @@ public: ...@@ -165,6 +165,12 @@ public:
spdlog::shutdown(); spdlog::shutdown();
} }
static std::shared_ptr<logger>&
get_global_logger() {
static std::shared_ptr<logger> s_global_logger;
return s_global_logger;
}
// the following member functions can be used to interact // the following member functions can be used to interact
// with a specific logger instance // with a specific logger instance
inline void inline void
...@@ -291,26 +297,27 @@ private: ...@@ -291,26 +297,27 @@ private:
// the following static functions can be used to interact // the following static functions can be used to interact
// with a globally registered logger instance // with a globally registered logger instance
static inline std::shared_ptr<logger>&
get_global_logger() {
static std::shared_ptr<logger> s_global_logger;
return s_global_logger;
}
template <typename... Args> template <typename... Args>
static inline void static inline void
create_global_logger(Args&&... args) { create_global_logger(Args&&... args) {
get_global_logger() = std::make_shared<logger>(args...); logger::get_global_logger() = std::make_shared<logger>(args...);
} }
static inline void static inline void
register_global_logger(logger&& lg) { register_global_logger(logger&& lg) {
get_global_logger() = std::make_shared<logger>(std::move(lg)); logger::get_global_logger() = std::make_shared<logger>(std::move(lg));
} }
static inline void static inline void
destroy_global_logger() { destroy_global_logger() {
get_global_logger().reset(); logger::get_global_logger().reset();
}
static inline void
flush_global_logger() {
if(logger::get_global_logger()) {
logger::get_global_logger()->flush();
}
} }
......
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
#define LOGGER_INFO(...) \ #define LOGGER_INFO(...) \
do { \ do { \
using logger::logger; \
if(logger::get_global_logger()) { \ if(logger::get_global_logger()) { \
logger::get_global_logger()->info(__VA_ARGS__); \ logger::get_global_logger()->info(__VA_ARGS__); \
} \ } \
...@@ -41,6 +42,7 @@ ...@@ -41,6 +42,7 @@
#define LOGGER_DEBUG(...) \ #define LOGGER_DEBUG(...) \
do { \ do { \
using logger::logger; \
if(logger::get_global_logger()) { \ if(logger::get_global_logger()) { \
logger::get_global_logger()->debug(__VA_ARGS__); \ logger::get_global_logger()->debug(__VA_ARGS__); \
} \ } \
...@@ -48,6 +50,7 @@ ...@@ -48,6 +50,7 @@
#define LOGGER_FLUSH() \ #define LOGGER_FLUSH() \
do { \ do { \
using logger::logger; \
if(logger::get_global_logger()) { \ if(logger::get_global_logger()) { \
logger::get_global_logger()->flush(); \ logger::get_global_logger()->flush(); \
} \ } \
...@@ -66,6 +69,7 @@ ...@@ -66,6 +69,7 @@
#define LOGGER_WARN(...) \ #define LOGGER_WARN(...) \
do { \ do { \
using logger::logger; \
if(logger::get_global_logger()) { \ if(logger::get_global_logger()) { \
logger::get_global_logger()->warn(__VA_ARGS__); \ logger::get_global_logger()->warn(__VA_ARGS__); \
} \ } \
...@@ -73,6 +77,7 @@ ...@@ -73,6 +77,7 @@
#define LOGGER_ERROR(...) \ #define LOGGER_ERROR(...) \
do { \ do { \
using logger::logger; \
if(logger::get_global_logger()) { \ if(logger::get_global_logger()) { \
logger::get_global_logger()->error(__VA_ARGS__); \ logger::get_global_logger()->error(__VA_ARGS__); \
} \ } \
...@@ -80,6 +85,7 @@ ...@@ -80,6 +85,7 @@
#define LOGGER_ERRNO(...) \ #define LOGGER_ERRNO(...) \
do { \ do { \
using logger::logger; \
if(logger::get_global_logger()) { \ if(logger::get_global_logger()) { \
logger::get_global_logger()->error_errno(__VA_ARGS__); \ logger::get_global_logger()->error_errno(__VA_ARGS__); \
} \ } \
...@@ -87,6 +93,7 @@ ...@@ -87,6 +93,7 @@
#define LOGGER_CRITICAL(...) \ #define LOGGER_CRITICAL(...) \
do { \ do { \
using logger::logger; \
using logger::logger; \ using logger::logger; \
if(logger::get_global_logger()) { \ if(logger::get_global_logger()) { \
logger::get_global_logger()->critical(__VA_ARGS__); \ logger::get_global_logger()->critical(__VA_ARGS__); \
......
...@@ -213,7 +213,7 @@ server::signal_handler(int signum) { ...@@ -213,7 +213,7 @@ server::signal_handler(int signum) {
case SIGHUP: case SIGHUP:
LOGGER_WARN("A signal (SIGHUP) occurred."); LOGGER_WARN("A signal (SIGHUP) occurred.");
logger::get_global_logger()->flush(); logger::flush_global_logger();
break; break;
default: default:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment