Verified Commit e1c57a55 authored by Alberto Miranda's avatar Alberto Miranda ♨️
Browse files

WIP: fix logger (merge with previous)

parent 0ad18d79
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -49,6 +49,8 @@ logger_setup(const char* ident, logger_type type, const char* log_file) {
void
logger_log(enum logger_level level, const char* fmt, ...) {

    using logger::logger;

    if(const auto logger = logger::get_global_logger(); logger) {

        std::array<char, LOGGER_MSG_MAX_LEN> msg; // NOLINT
@@ -79,7 +81,9 @@ logger_log(enum logger_level level, const char* fmt, ...) {

void
logger_destroy() {
    using logger::logger;

    if(logger::get_global_logger()) {
        logger::destroy_global_logger();
        ::logger::destroy_global_logger();
    }
}
+16 −9
Original line number Diff line number Diff line
@@ -165,6 +165,12 @@ public:
        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
    // with a specific logger instance
    inline void
@@ -291,26 +297,27 @@ private:
// the following static functions can be used to interact
// 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>
static inline void
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
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
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();
    }
}


+7 −0
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@

#define LOGGER_INFO(...)                                                       \
    do {                                                                       \
        using logger::logger;                                                  \
        if(logger::get_global_logger()) {                                      \
            logger::get_global_logger()->info(__VA_ARGS__);                    \
        }                                                                      \
@@ -41,6 +42,7 @@

#define LOGGER_DEBUG(...)                                                      \
    do {                                                                       \
        using logger::logger;                                                  \
        if(logger::get_global_logger()) {                                      \
            logger::get_global_logger()->debug(__VA_ARGS__);                   \
        }                                                                      \
@@ -48,6 +50,7 @@

#define LOGGER_FLUSH()                                                         \
    do {                                                                       \
        using logger::logger;                                                  \
        if(logger::get_global_logger()) {                                      \
            logger::get_global_logger()->flush();                              \
        }                                                                      \
@@ -66,6 +69,7 @@

#define LOGGER_WARN(...)                                                       \
    do {                                                                       \
        using logger::logger;                                                  \
        if(logger::get_global_logger()) {                                      \
            logger::get_global_logger()->warn(__VA_ARGS__);                    \
        }                                                                      \
@@ -73,6 +77,7 @@

#define LOGGER_ERROR(...)                                                      \
    do {                                                                       \
        using logger::logger;                                                  \
        if(logger::get_global_logger()) {                                      \
            logger::get_global_logger()->error(__VA_ARGS__);                   \
        }                                                                      \
@@ -80,6 +85,7 @@

#define LOGGER_ERRNO(...)                                                      \
    do {                                                                       \
        using logger::logger;                                                  \
        if(logger::get_global_logger()) {                                      \
            logger::get_global_logger()->error_errno(__VA_ARGS__);             \
        }                                                                      \
@@ -87,6 +93,7 @@

#define LOGGER_CRITICAL(...)                                                   \
    do {                                                                       \
        using logger::logger;                                                  \
        using logger::logger;                                                  \
        if(logger::get_global_logger()) {                                      \
            logger::get_global_logger()->critical(__VA_ARGS__);                \
+1 −1
Original line number Diff line number Diff line
@@ -213,7 +213,7 @@ server::signal_handler(int signum) {

        case SIGHUP:
            LOGGER_WARN("A signal (SIGHUP) occurred.");
            logger::get_global_logger()->flush();
            logger::flush_global_logger();
            break;

        default: