PLOG使用

PLOG开源日志库使用

  • 获取PLOG
    下载地址:https://github.com/SergiusTheBest/plog
    下载好后进行解压出来的目录如下所示
    在这里插入图片描述
    其中include目录就是我们需要加入到我们工程中的,samples目录存放PLOG的使用例程,具体的PLOG介绍和使用可以读README.md文件。
  • 使用
    第一步:添加头文件
    #include <plog\Log.h>
    #include <plog\Initializers\RollingFileInitializer.h>
    第二步:初始化Logger
    plog::init(plog::debug, “Hello.txt”);
    第三步:输出Log信息

宏输出:

PLOG_VERBOSE << "verbose";//等效PLOGV << "verbose";
PLOG_DEBUG << "debug";//等效PLOGD << "debug";
PLOG_INFO << "info";//等效PLOGI << "info";
PLOG_WARNING << "warning";//等效PLOGW << "warning";
PLOG_ERROR << "error";//等效PLOGE << "error";
PLOG_FATAL << "fatal";//等效PLOGF << "fatal";
PLOG_NONE << "none";//等效PLOGN << "none";
//c-style
PLOG(serverity) << "msg";

条件判断输出:

PLOG_VERBOSE_IF(cond) << "verbose";//等效PLOGV_IF(cond) << "verbose";
PLOG_DEBUG_IF(cond) << "debug";//等效PLOGD_IF(cond) << "debug";
PLOG_INFO_IF(cond) << "info";//等效PLOGI_IF(cond) << "info";
PLOG_WARNING_IF(cond) << "warning";//等效PLOGW_IF(cond) << "warning";
PLOG_ERROR_IF(cond) << "error";//等效PLOGE_IF(cond) << "error";
PLOG_FATAL_IF(cond) << "fatal";//等效PLOGF_IF(cond) << "fatal";
PLOG_NONE_IF(cond) << "none";//等效PLOGN_IF(cond) << "none";
//c-style
PLOG_IF(serverity, cond) << "msg";

输出日志程度判断:

IF_PLOG(serverity)
//example
IF_PLOG(plog::debug)//serverity为debug时才执行内部代码
{
	//do something
}
  • 说明
    PLOG日志库的使用还是比较简单的,这里只是简单的使用,还有一些高级用法可以通过阅读其提供的文档进行学习使用。
<think>好的,我现在需要帮助用户了解如何在plog日志库中进行格式化。首先,我需要回忆一下plog的相关知识,以及它的格式化方法。根据用户提供的引用内容,特别是引用[4]提到plog支持自定义格式,而引用[3]也提到Android-PLog增加了新的格式化选项。这说明plog确实允许用户自定义日志格式。 接下来,我应该确定plog中如何设置格式化选项。根据引用[4],用户可以通过plog::init函数初始化日志,这里可能涉及到格式化的配置。查阅plog的文档或使用指南,我记得plog允许在初始化时指定一个Formatter类,或者使用预定义的格式选项。例如,TxtFormatter可能用于纯文本格式,而CsvFormatter用于CSV格式。 然后,用户可能需要具体的示例代码。比如,如何自定义输出格式,包括时间、日志级别、线程ID等信息。需要确保示例代码正确,符合用户提供的系统级指令,比如使用正确的LaTeX格式,并且代码块用反引号包裹。 另外,用户的问题可能还涉及如何修改现有的日志格式,比如添加自定义的消息或调整时间格式。这时候需要说明如何利用plog提供的接口,比如重写format方法,或者使用相应的格式说明符。 还需要注意用户提到的引用内容,特别是引用[4]提到在多个文件中打印日志时,只需在入口初始化,其他文件包含头文件即可。因此在示例中应该展示初始化时的格式化设置,而其他地方的日志调用不需要额外参数。 最后,生成相关问题时要围绕plog的格式化方法、配置选项、性能影响以及与其他日志库的对比等方面。确保问题能够帮助用户深入理解plog的格式化功能,并解决可能遇到的常见问题。</think>以下是关于 plog 日志格式化的方法及示例说明: ### plog 日志格式化的核心方法 1. **初始化时指定格式化器** 在 `plog::init` 函数中,通过模板参数选择预定义的格式化器或自定义类: ```cpp #include <plog/Log.h> #include <plog/Formatters/TxtFormatter.h> // 文本格式 #include <plog/Formatters/CsvFormatter.h> // CSV格式 // 使用文本格式化器初始化 plog::init<plog::TxtFormatter>(plog::debug, "log.txt"); ``` 2. **自定义格式化规则** 继承 `plog::Formatter` 并重写 `format` 方法: ```cpp class CustomFormatter { public: static plog::util::nstring header() { return {}; } // 可添加文件头(如CSV列名) static plog::util::nstring format(const plog::Record& record) { plog::util::nostringstream ss; ss << record.getTime().time << " [TID:" << record.getTid() << "] " << plog::severityToString(record.getSeverity()) << ": " << record.getMessage() << "\n"; return ss.str(); } }; // 初始化时应用自定义格式化器 plog::init<CustomFormatter>(plog::info, "custom.log"); ``` 3. **时间格式控制** 使用 `plog::util::Time` 中的方法调整时间显示格式: ```cpp // 示例:在自定义格式化器中输出 "YYYY-MM-DD HH:MM:SS" ss << record.getTime().toISO8601(); // 默认ISO8601格式 ``` ### 完整示例代码 ```cpp #include <plog/Log.h> #include <plog/Formatters/TxtFormatter.h> #include <plog/Appenders/RollingFileAppender.h> int main() { // 初始化日志:使用文本格式,保存到文件,设置日志级别为debug static plog::RollingFileAppender<plog::TxtFormatter> fileAppender("app.log"); plog::init(plog::debug, &fileAppender); // 输出不同级别的日志 PLOG_VERBOSE << "详细调试信息"; PLOG_INFO << "用户登录成功"; PLOG_ERROR << "文件读取失败"; return 0; } ``` 输出示例: ``` 2024-01-01 10:00:00 [TID:1234] INFO: 用户登录成功 2024-01-01 10:00:01 [TID:1234] ERROR: 文件读取失败 ``` ### 关键配置参数 - **日志级别**:`plog::debug`/`plog::info`/`plog::warning` 等 - **输出内容**:线程ID、时间戳、日志级别、消息体 - **文件管理**:文件大小限制和备份数量[^4]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

复杂的世界311

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值