C++封装的日志模块, 简单易用的、灵活、异步、线程安全

nlog

旨在提供一个高度灵活, 简单易用且速度优良的C++日志模块, 目前应用方向为Windows桌面端应用程序
传送门:https://gitee.com/kwok-jh/nlog

特性

  1. 异步
  2. 线程安全
  3. 多实例 多配置及输出文件
  4. 灵活 C/C++风格混搭输出并同时支持宽字节,多字节字符
  5. 性能 据不严格的测试,多线程并发写40w条记录到一个文件的时间是1.343秒
  6. 国际化 全程使用Unicode

1.快速上手

 #include "nlog.h"                                                    //包含头文件, 并连接对应的lib
 ...
_NLOG_APP("Hello %s!", "World");                                      //打印C风格    多字节
_NLOG_WAR() << nlog::time  << L" 此后起我们的征程便是星辰大海...";      //打印C++风格  宽字节
_NLOG_ERR("Oh, %s!", "No") << L" 有人动了你的代码并在里面下了毒...";    //混搭式打印
_NLOG_SET_LEVE(nlog::LV_WAR);                                        //设置只打印警告及以上的
_NLOG_APP(L"糟糕~~~有交警查酒驾...");                                      
_NLOG_WAR(L"哈哈~~~成功溜出来了...");
...
_NLOG_SHUTDOWN();                                                    //关闭nlog, 清理资源

/*
输出结果
file: ./log/log-0812-2326.log
[08-12 23:26:57][APP][32E4    ]: Hello World!
[08-12 23:26:57][WAR][32E4    ]: 08-12 23:26:57 此后起我们的征程便是星辰大海...
[08-12 23:26:57][ERR][32E4    ]: Oh, No! 有人动了你的代码并在里面下了毒...
[08-12 23:26:57][WAR][32E4    ]: 哈哈~~~成功溜出来了...
*/

2.自定义打印风格

_NLOG_CFG cfg = {
    L"{module_dir}\\日志",                      //日志存储目录    默认是: "{module_dir}\\log\\"
    L"custom_style_%m%d.log",                   //文件名格式      默认是: "log-%m%d-%H%M.log"
    L"%Y-%m-%d",                                //日期格式        默认是: "%m-%d %H:%M:%S"
    L"[{time}][{level}][{id}][{file}:{line}]: " //前缀格式        默认是: "[{time}][{level}][{id}]: "
};

_NLOG_SET_CONFIG(cfg);
...
_NLOG_APP("Hello %s!", "World");                                     //打印C风格    多字节
_NLOG_WAR() << nlog::time   << L" 从此刻起我们的征途便是星辰大海...";   //打印C++风格  宽字节
_NLOG_ERR("Oh, %s! ", "No") << L"有人动了你的代码并在里面下了毒...";    //混搭式打印
_NLOG_SHUTDOWN(); 

/*
输出结果
file: ./日志/custom_style_0812.log
[2018-08-12][APP][32D8    ][02_custom_style.cpp: 49 ]: Hello World!
[2018-08-12][WAR][32D8    ][02_custom_style.cpp: 51 ]: 2018-08-12 从此刻起我们的征途便是星辰大海...
[2018-08-12][ERR][32D8    ][02_custom_style.cpp: 53 ]: Oh, No! 有人动了你的代码并在里面下了毒...
*/

3.多线程并发打印同一文件40w日志

参考example, 略…

4.多线日志实例不同配置打印4个不同的文件

参考example, 略…

你可能感兴趣的:(日志)