介绍一个headonly的log库easylogging++

作者: NickYang 分类: 技术文章,程序开发 发布时间: 2015-04-03 10:14

因为TX的log要求按照小时滚动,并且按照大小滚动,原来的glog设置完大小后,容量了就不会再写入了,而且按小时滚动也很麻烦,所以就找了找其他的log库。

主要要求简单上手,支持大小和时间滚动,不需要改动太多。

看了之前用过的log4cxx等库,发现编译成静态文件后太大了,我们又必须要求静态,所以就很麻烦。

github上找到了一个easylogging++的库,headonly,只有一个头文件,看起来非常炫酷,决定试一试,结果上手确实很简单,支持配置,配置也很强大

项目地址:https://github.com/easylogging/easyloggingpp

一个简单的使用例子:

上面注册过滚动函数后就可以按照大小滚动了,不过注意一定要加上StrictLogFileSizeCheck的flag。

按照小时滚动的我加了一些简单粗暴的代码实现了,就不放出来献丑了,如果大家需要,可以单独找我获取。

其中log.conf是配置文件,大致内容如下:

生成出来的log非常整齐,整体满足了我的需求,而且只有头文件,不需要编译库,实在是方便。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

24条评论
  • chesun

    2017 年 5 月 27 日 17:12

    大神 如何在低级别日志里包含高级别日志?

    潜水 Chrome浏览器 Windows 7 x64 Edition
    1. NickYang

      2017 年 5 月 31 日 17:35

      修改源码,把其中的switch-case中的break去掉,按照级别case下去就好了

      站长 QQ浏览器 Windows 7 x64 Edition
  • yeshi

    2017 年 4 月 6 日 17:20

    ELPP_UNICODE
    START_EASYLOGGINGPP(argc, argv);
    …………………….
    LOG(INFO) << L"中文汉字输出测试";
    LOG(INFO) << "English Test";
    中文输出不到屏幕终端,一旦输出中文,其后的日志都无法显示到终端,即使是英文也不能再终端显示
    不过中文日志可正常输出到文件。
    楼主有没有好的解决办法

    潜水 UC浏览器 Windows 7 x64 Edition
    1. NickYang

      2017 年 4 月 6 日 17:29

      你试试直接用中文呢,我还真没测试过中文,基本log都是输出英文的了,运营环境下机器都是英文环境。所以暂时帮不了你,你可以试试转成unicode

      站长 Chrome浏览器 Windows 7 x64 Edition
  • 1233

    2016 年 11 月 22 日 09:30

    error C3861: “TRACE”: 找不到标识符 用在MFC中怎么报这个错

    潜水 Chrome浏览器 Windows 10 x64 Edition
  • soshan

    2015 年 9 月 18 日 10:53

    用vs2010编译的过去吗?

    潜水 Chrome浏览器 Windows 8.1 x64 Edition
    1. eliteYang

      2015 年 9 月 18 日 18:01

      麻烦你仔细看下文章内容,这个库是head-only的,也就是只有头文件,直接包含就可以了,跟编译器没关系

      站长 Chrome浏览器 Windows 7 x64 Edition
      1. soshan

        2015 年 9 月 18 日 18:24

        vs2010的编译报错,头文件用到c++11相关的东西,vs2010编译不过?你如果有vs2010可以帮忙看下,谢谢!

        潜水 Chrome浏览器 Windows 8.1 x64 Edition
        1. eliteYang

          2015 年 9 月 19 日 15:23

          具体的错误在github的issue里贴一下,我们在里面讨论

          站长 Chrome浏览器 Windows 7 x64 Edition
        2. eliteYang

          2015 年 9 月 19 日 15:23

          https://github.com/eliteYang/easylogging 我做了小时滚动的版本,在这里讨论

          站长 Chrome浏览器 Windows 7 x64 Edition
          1. soshan

            2015 年 9 月 21 日 08:27

            easylogging++.h(502): error C2332: “enum”: 缺少标记名
            easylogging++.h(502): error C2236: 意外的“class”“el::Level”。是否忘记了“;”?
            easylogging++.h(502): error C3381: “el::Level”: 只有在用 /clr 选项编译的代码中才有程序集访问说明符
            easylogging++.h(502): error C2516: “el::base::type::EnumType”: 是非法基类
            easylogging++.h(471) : 参见“el::base::type::EnumType”的声明
            easylogging++.h(504): error C4430: 缺少类型说明符 – 假定为 int。注意: C++ 不支持默认 int
            easylogging++.h(504): error C2864: “el::Level::Global”: 只有静态常量整型数据成员才可以在类中初始化

            类似这些

            潜水 Chrome浏览器 Windows 8.1 x64 Edition
        3. eliteYang

          2015 年 9 月 21 日 15:14

          看这个章节,确实是不支持VS2010的,他用了模版参数
          https://github.com/easylogging/easyloggingpp#compatibility
          Tested with VS2012, VS2013-Preview; Use of argument templates instead of variadic templates. CRT warnings control. No stack trace logging.

          站长 Chrome浏览器 Windows 7 x64 Edition
  • wisteria

    2015 年 6 月 10 日 16:44

    好, 非常感谢, 我就不用再去造轮子了

    潜水 Chrome浏览器 Windows 7 x64 Edition
    1. eliteYang

      2015 年 6 月 10 日 16:46

      哈……因为我们是跟TX合作,需要按小时的,你也可以按天滚动,修改下时间判断就好了,造轮子太累了,这个库还算比较轻量,而且headonly的,可以试试,有问题多交流,微信和QQ都可以

      站长 Chrome浏览器 Windows 7 x64 Edition
  • wisteria

    2015 年 6 月 10 日 16:28

    这个简单粗暴按照小时滚动式怎么实现的呢, 能教下我么

    潜水 Chrome浏览器 Windows 7 x64 Edition
    1. eliteYang

      2015 年 6 月 10 日 16:39

      看github上这个我上传修改过的工程,https://github.com/eliteYang/easylogging 里面的这个函数unsafeValidateFileRolling,具体用法请看ReadMe.md文件

      站长 Chrome浏览器 Windows 7 x64 Edition
      1. wisteria

        2015 年 6 月 10 日 16:45

        谢啦,

        潜水 Chrome浏览器 Windows 7 x64 Edition
  • 善记事博客

    2015 年 5 月 27 日 17:26

    内容很实用,谢谢

    潜水 搜狗浏览器 Windows 7 x64 Edition
  • yoyo

    2015 年 5 月 5 日 11:56

    这个需要用到STL么?

    潜水 UC浏览器 Windows 7
    1. eliteYang

      2015 年 5 月 5 日 12:28

      现在STL是标准库,肯定会用到的

      神话 Chrome浏览器 Windows 7 x64 Edition
  • 阿里百秀

    2015 年 4 月 13 日 11:16

    分享的内容很赞,可以试试

    潜水 其它浏览器 其它操作系统
  • 阿里百秀

    2015 年 4 月 13 日 11:16

    分享的内容很赞,可以试试

    潜水 其它浏览器 其它操作系统
  • Yu

    2015 年 4 月 4 日 22:51

    好赞,我也试试

    神话 其它浏览器 其它操作系统
    1. eliteYang

      2015 年 4 月 4 日 22:56

      可以试试,挺不错的

      神话 其它浏览器 其它操作系统

发表评论

电子邮件地址不会被公开。 必填项已用*标注