在C++中,可以使用一些流行的日志庫(如spdlog、glog等)來記錄日志。這些日志庫通常允許用戶自定義日志消息的格式,以下是一些常見的方式來定制日志消息格式:
spdlog::info("This is a log message with timestamp: {} and level: {}", spdlog::to_string(spdlog::get_time()), spdlog::level::info);
class CustomFormatter : public spdlog::formatter
{
public:
void format(const spdlog::details::log_msg& msg, spdlog::memory_buf_t& dest) override
{
spdlog::memory_buf_t tmp;
fmt::format_to(tmp, "[{}] [{}] [{}] {}", spdlog::to_string(msg.time), spdlog::level::to_str(msg.level), msg.source.filename, msg.payload);
spdlog::memory_buf_t formatted;
fmt::format_to(formatted, "{}\n", fmt::to_string(tmp));
fmt::format_to(dest, "{}", fmt::to_string(formatted));
}
};
spdlog::set_formatter(std::make_unique<CustomFormatter>());
void custom_logger(const spdlog::details::log_msg& msg)
{
std::cout << "[CustomLogger] [" << spdlog::to_string(msg.time) << "] [" << spdlog::level::to_str(msg.level) << "] [" << msg.source.filename << "] " << msg.payload << std::endl;
}
spdlog::set_error_handler(custom_logger);
無論采用哪種方式,都可以根據實際需求定制日志消息的格式,并且靈活地輸出自定義的日志信息。