依赖包安装
- 使用神器vcpkg
vcpkg install log4cplus[core, unicode]:x86-windows
, 安装匹配项目的包
Show Me the Code
| #ifndef LOGGER_HEADER |
| #define LOGGER_HEADER |
| #include <iostream> |
| |
| #include <log4cplus/loggingmacros.h> |
| #include <log4cplus/logger.h> |
| #include <log4cplus/consoleappender.h> |
| #include <log4cplus/fileappender.h> |
| #include <log4cplus/layout.h> |
| #include <log4cplus/configurator.h> |
| #include <log4cplus/helpers/loglog.h> |
| #include <log4cplus/helpers/stringhelper.h> |
| |
| #include <boost/filesystem.hpp> |
| #include <boost/shared_ptr.hpp> |
| |
| using namespace boost::filesystem; |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| class Logger { |
| public: |
| |
| |
| static boost::shared_ptr<Logger> getInstance(); |
| log4cplus::Logger getLogger(); |
| |
| ~Logger(); |
| |
| private: |
| Logger(); |
| |
| |
| Logger(const Logger&); |
| const Logger& operator=(const Logger&); |
| |
| log4cplus::Logger _logger; |
| }; |
| |
| |
| |
| static boost::shared_ptr<Logger> instance = nullptr; |
| static std::once_flag of; |
| |
| Logger::Logger() |
| { |
| #pragma region 文件载入 |
| |
| |
| |
| |
| |
| |
| |
| #pragma endregion |
| |
| #pragma region 代码载入 |
| log4cplus::initialize(); |
| log4cplus::helpers::Properties consoleProperties; |
| consoleProperties.setProperty(LOG4CPLUS_TEXT("Encoding"), LOG4CPLUS_TEXT("utf-8")); |
| log4cplus::SharedAppenderPtr CA(new log4cplus::ConsoleAppender(consoleProperties)); |
| CA->setName(LOG4CPLUS_TEXT("CA")); |
| log4cplus::tstring pattern = LOG4CPLUS_TEXT("[%D{%Y-%m-%d %H:%M:%S.%Q}] %-5p %m%n"); |
| CA->setLayout(std::unique_ptr<log4cplus::Layout>(new log4cplus::PatternLayout(pattern))); |
| |
| log4cplus::helpers::Properties timeBasedProperties; |
| timeBasedProperties.setProperty(LOG4CPLUS_TEXT("FilenamePattern"), LOG4CPLUS_TEXT("Log/%d{yyyy-MM-dd}.log")); |
| timeBasedProperties.setProperty(LOG4CPLUS_TEXT("Schedule"), LOG4CPLUS_TEXT("DAILY")); |
| timeBasedProperties.setProperty(LOG4CPLUS_TEXT("Append"), LOG4CPLUS_TEXT("true")); |
| timeBasedProperties.setProperty(LOG4CPLUS_TEXT("MaxHistory"), LOG4CPLUS_TEXT("365")); |
| timeBasedProperties.setProperty(LOG4CPLUS_TEXT("RollOnClose"), LOG4CPLUS_TEXT("false")); |
| timeBasedProperties.setProperty(LOG4CPLUS_TEXT("CreateDirs"), LOG4CPLUS_TEXT("true")); |
| timeBasedProperties.setProperty(LOG4CPLUS_TEXT("MaxFileSize"), LOG4CPLUS_TEXT("10MB")); |
| timeBasedProperties.setProperty(LOG4CPLUS_TEXT("MaxBackupIndex"), LOG4CPLUS_TEXT("10")); |
| timeBasedProperties.setProperty(LOG4CPLUS_TEXT("Encoding"), LOG4CPLUS_TEXT("utf-8")); |
| log4cplus::SharedAppenderPtr MR(new log4cplus::TimeBasedRollingFileAppender(timeBasedProperties)); |
| pattern = LOG4CPLUS_TEXT("[%D{%Y-%m-%d %H:%M:%S.%Q}] %-5p %m%n"); |
| MR->setLayout(std::unique_ptr<log4cplus::Layout>(new log4cplus::PatternLayout(pattern))); |
| #pragma endregion |
| |
| _logger = log4cplus::Logger::getRoot(); |
| _logger.setLogLevel(log4cplus::ALL_LOG_LEVEL); |
| _logger.addAppender(CA); |
| _logger.addAppender(MR); |
| } |
| |
| Logger::~Logger() { |
| log4cplus::Logger::shutdown(); |
| } |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| boost::shared_ptr<Logger> Logger::getInstance() { |
| std::call_once(of, [&]() { |
| instance = boost::shared_ptr<Logger>(new Logger()); |
| }); |
| |
| return instance; |
| } |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| log4cplus::Logger Logger::getLogger() { |
| return _logger; |
| } |
| |
| #define LOG_TRACE(log) LOG4CPLUS_TRACE(Logger::getInstance()->getLogger(), log) |
| #define LOG_DEBUG(log) LOG4CPLUS_DEBUG(Logger::getInstance()->getLogger(), log) |
| #define LOG_INFO(log) LOG4CPLUS_INFO(Logger::getInstance()->getLogger(), log) |
| #define LOG_WARN(log) LOG4CPLUS_WARN(Logger::getInstance()->getLogger(), log) |
| #define LOG_ERROR(log) LOG4CPLUS_ERROR(Logger::getInstance()->getLogger(), log) |
| #define LOG_FATAL(log) LOG4CPLUS_FATAL(Logger::getInstance()->getLogger(), log) |
| #endif |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步