V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Akagi201
V2EX  ›  问与答

写了个 C 语言的日志库, 设置了 8 个 level, 想用 8 种颜色来区分(越严重的 log 颜色越明显), 调整几次了, 还是感觉不理想, 大家给点意见. https://github.com/Akagi201/lwlog

  •  
  •   Akagi201 · 2014-12-01 10:41:50 +08:00 · 3521 次点击
    这是一个创建于 3649 天前的主题,其中的信息可能已经有所发展或是发生改变。
    第 1 条附言  ·  2014-12-01 12:43:16 +08:00
    哎, 歪楼了, 都讨论库本身的意义了. 跟我的库类似的轮子还是挺多的, 当然都是一些小的个人用用的. 换颜色还是看我以后使用过程中的感受吧
    15 条回复    2014-12-04 20:32:18 +08:00
    besto
        1
    besto  
       2014-12-01 10:45:32 +08:00
    Log这种东西吧,要配合grep一起用,个人愚见。打的多没关系,只要别严重影响性能就好,靠关键词区分最好
    icedx
        2
    icedx  
       2014-12-01 10:50:51 +08:00 via Android
    这个可以做什么
    Akagi201
        3
    Akagi201  
    OP
       2014-12-01 11:01:39 +08:00
    @besto 全用宏实现的, 只是传了不同参数的fprintf(stderr, xxxx)而已, 之前用函数实现, 加时间, 网络等等功能, 现在不想用了.

    @icedx 就是来统一化打印用的
    bookit
        4
    bookit  
       2014-12-01 11:08:50 +08:00   ❤️ 1
    用这个工具来配色

    https://color.adobe.com/zh/
    lsmgeb89
        5
    lsmgeb89  
       2014-12-01 11:20:10 +08:00   ❤️ 1
    这个只能个人小项目用用吧。大项目 log 多了影响性能的,所以要有配置文件控制输出那些。

    0. 头文件兼容 C++
    1. 加时间输出
    2. 跨平台
    3. 线程安全
    4. 根据配置文件调整级别,不要重编译
    5. 启动时注册模块,根据配置文件,输出不同模块的 log。
    6. 根据配置文件调整输出对象(文件、终端。。。)

    其实很多库都带的 log 功能的,Windows API,boost,QT
    而且 Windows 下的那个对性能影响很小。
    Akagi201
        6
    Akagi201  
    OP
       2014-12-01 11:25:46 +08:00 via iPhone
    @lsmgeb89 我的想法也是大项目根据自己特点自己写日志库吧,小项目不用那么复杂功能就不要造轮子了
    sharebox
        7
    sharebox  
       2014-12-01 11:49:28 +08:00
    不建议搞这么复杂,日志多了估计会有影响。 直接在每行日志把级别打上,分析的时候grep一下多简单。
    ChanneW
        8
    ChanneW  
       2014-12-01 12:39:12 +08:00
    楼主的库一统江湖,成为行业标准.以后招聘程序员就得加一条:非色盲色弱.
    Akagi201
        9
    Akagi201  
    OP
       2014-12-01 12:47:46 +08:00
    @sharebox 性能保证不会有影响的, 使用宏就是build time的事情, 跟fprintf性能完全一样. 关掉后一点性能损失没有. 颜色不想要也可以去掉.

    @ChanneW 可以增加一点声音控制, error来个警报音...
    sharebox
        10
    sharebox  
       2014-12-01 13:18:24 +08:00
    @Akagi201 实际环境中,应该没有人整天守着服务器看日志吧,你加个警报也没人听得到,还不如加邮件告警。一般的大项目,尤其是分布式应用,日志每天都是几十G的产生,可能更多,基本上都是统一打包送到日志服务器,有专门的分析服务,出了问题会首先看过滤后的结果,不然找日志都麻烦。

    不过看样子,好像是歪楼了,呵呵。
    jemyzhang
        11
    jemyzhang  
       2014-12-01 13:46:10 +08:00
    log最好用字符区分,便于查找,颜色啥的都是噱头
    twilight
        12
    twilight  
       2014-12-02 14:25:53 +08:00
    @lsmgeb89 "其实很多库都带的 log 功能的,Windows API"是指Windows Event Log Functions么?
    Weakdancer
        13
    Weakdancer  
       2014-12-04 20:19:42 +08:00   ❤️ 1
    我的方法是事物名字的hash值转化成对应的RGB颜色就行了,颜色看久了就会有条件反射的感觉了。
    比如看到绿色就知道是warning等。

    另外可以直接红橙黄绿青蓝紫也可以。

    这是我之前写个管理很多项目编译的操作面板。
    颜色就是 : bg="#%6X"%abs(hash(f)/200)
    f就是名字。

    http://v2ex.com/i/A5c93DnE.jpeg

    另外这是我以前在C51下写的logging,能用而已。
    http://myswap.sinaapp.com/wd/logging.h
    Akagi201
        14
    Akagi201  
    OP
       2014-12-04 20:30:05 +08:00
    @Weakdancer 我这个目前只有level的控制, 后面可能考虑加入module的控制. 当然还是能在运行时控制最好了, 不过我的需求目前不需要, 因为我是提供库给别人用, 别人绝对不会在运行时用我的日志库, 一定是用他自己的.

    另外, 我觉得重要是的把严重错误突出显示出来. 属于哪个模块相对次要, 可以发现错误了在看. 相关的项目有个`Colormake`, 我也在用的, 等有空看看他的颜色是怎么定的吧.
    Akagi201
        15
    Akagi201  
    OP
       2014-12-04 20:32:18 +08:00
    @Weakdancer 你这网站挺奇葩的, 呵呵. 现在web开发方向技术发展很快, 我想引入一些思想到嵌入式里面来.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3282 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 12:15 · PVG 20:15 · LAX 04:15 · JFK 07:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.