how to use boost log from multiple files with Gloa

后端 未结 1 1295
傲寒
傲寒 2020-12-13 22:29

I am trying to create a Global Logger within my entire application so I can use

src::severity_logger_mt< >& lg = my_logger::get();
<
相关标签:
1条回答
  • 2020-12-13 22:42

    I've just managed to get this working myself

    Logging.h

    #pragma once
    
    #include <boost/log/expressions.hpp>
    #include <boost/log/sources/global_logger_storage.hpp>
    #include <boost/log/support/date_time.hpp>
    #include <boost/log/trivial.hpp>
    #include <boost/log/utility/setup.hpp>
    
    #define INFO  BOOST_LOG_SEV(my_logger::get(), boost::log::trivial::info)
    #define WARN  BOOST_LOG_SEV(my_logger::get(), boost::log::trivial::warning)
    #define ERROR BOOST_LOG_SEV(my_logger::get(), boost::log::trivial::error)
    
    #define SYS_LOGFILE             "/var/log/example.log"
    
    //Narrow-char thread-safe logger.
    typedef boost::log::sources::severity_logger_mt<boost::log::trivial::severity_level> logger_t;
    
    //declares a global logger with a custom initialization
    BOOST_LOG_GLOBAL_LOGGER(my_logger, logger_t)
    

    Logging.cpp

    #include "Logging.h"
    
    namespace attrs   = boost::log::attributes;
    namespace expr    = boost::log::expressions;
    namespace logging = boost::log;
    
    //Defines a global logger initialization routine
    BOOST_LOG_GLOBAL_LOGGER_INIT(my_logger, logger_t)
    {
        logger_t lg;
    
        logging::add_common_attributes();
    
        logging::add_file_log(
                boost::log::keywords::file_name = SYS_LOGFILE,
                boost::log::keywords::format = (
                        expr::stream << expr::format_date_time<     boost::posix_time::ptime >("TimeStamp", "%Y-%m-%d %H:%M:%S")
                        << " [" << expr::attr<     boost::log::trivial::severity_level >("Severity") << "]: "
                        << expr::smessage
                )
        );
    
        logging::add_console_log(
                std::cout,
                boost::log::keywords::format = (
                        expr::stream << expr::format_date_time<     boost::posix_time::ptime >("TimeStamp", "%Y-%m-%d %H:%M:%S")
                        << " [" << expr::attr<     boost::log::trivial::severity_level >("Severity") << "]: "
                        << expr::smessage
                )
        );
    
        logging::core::get()->set_filter
        (
            logging::trivial::severity >= logging::trivial::info
        );
    
        return lg;
    }
    

    main.c

    #include "Logging.h"
    
    int main(int argc, char **argv)
    {
        INFO << "Program started";
    
        return 0;
    }
    

    My build settings

    AM_LDFLAGS += -lboost_system -lboost_thread -lpthread
    AM_LDFLAGS += -DBOOST_LOG_DYN_LINK -lboost_log_setup -lboost_log
    AM_CXXFLAGS += -std=c++11 -DBOOST_LOG_DYN_LINK
    
    0 讨论(0)
提交回复
热议问题