#include <boost/log/core.hpp>
#include <boost/log/expressions.hpp>
#include <boost/log/support/date_time.hpp>
#include <boost/log/trivial.hpp>
#include <boost/log/utility/setup/common_attributes.hpp>
#include <boost/log/utility/setup/console.hpp>
#include <boost/log/utility/setup/file.hpp>
// 自定义宏,用于记录带有文件名和行号的日志
#define LOG_WITH_LOCATION(logger, severity) BOOST_LOG_SEV(logger, severity) \
<< "[" << __FILE__ << ":" << __LINE__ << "] "
// 针对不同日志级别定义简化宏
#define LOG_INFO(logger) LOG_WITH_LOCATION(logger, boost::log::trivial::info)
#define LOG_WARNING(logger) LOG_WITH_LOCATION(logger, boost::log::trivial::warning)
#define LOG_ERROR(logger) LOG_WITH_LOCATION(logger, boost::log::trivial::error)
#define LOG_FATAL(logger) LOG_WITH_LOCATION(logger, boost::log::trivial::fatal)
void init()
{
boost::log::add_console_log(std::clog, boost::log::keywords::format = (
boost::log::expressions::stream
<< boost::log::expressions::format_date_time<boost::posix_time::ptime>("TimeStamp", "%Y-%m-%d %H:%M:%S.%f") << " "
<< "[" << boost::log::trivial::severity << "] "
<< boost::log::expressions::smessage
));
boost::log::add_file_log(boost::log::keywords::file_name = "log_%N.log",
boost::log::keywords::rotation_size = 10 * 1024 * 1024,
boost::log::keywords::time_based_rotation = boost::log::sinks::file::rotation_at_time_point(0, 0, 0),
boost::log::keywords::format = (
boost::log::expressions::stream
<< boost::log::expressions::format_date_time<boost::posix_time::ptime>("TimeStamp", "%Y-%m-%d %H:%M:%S.%f")
<< " [" << boost::log::trivial::severity << "] "
<< boost::log::expressions::smessage)
);
// 添加通用属性
boost::log::add_common_attributes();
}
int main(int argc, char *argv[])
{
init();
// 添加控制台日志附加器
// 记录日志
boost::log::sources::severity_logger<boost::log::trivial::severity_level> logger;
LOG_INFO(logger) << "This is an info message";
LOG_WARNING(logger) << "This is a warning message";
LOG_ERROR(logger) << "This is an error message";
LOG_FATAL(logger) << "This is a fatal message";
return 0;
}
Boost.Log使用
于 2025-03-17 17:36:39 首次发布