zoukankan      html  css  js  c++  java
  • 学习如何写好日志!

    参考资料:
    1- 日志的艺术 http://blog.jobbole.com/113413/
    2- lazy思想 https://www.cnblogs.com/xybaby/p/6425735.html
    3- python logging
    Gregory的注解 https://garygregory.wordpress.com/2015/10/08/the-art-of-logging-advanced-message-formatting/
    2.7手册注解 https://docs.python.org/2/library/logging.html#

    一、搞明白为何要写!
    1、流程、状态记录
    2、故障查询
    二、日志写什么?
    按照Event的要素写日志内容
    1、时间 对于分布式和异步来说,global time十分重要。
    【NTP协议】Network Time Protocal协议,RFC 1305定义的时间同步协议。

    2、事件 发生了情况,一般有规定的专业写法
    3、发生地 注明情况发生的代码函数名和运行语句方便定位。注明主机,有助于在分布式系统中具体分析。
    注明主机,有助于在分布式系统中具体分析。1
    4、context 记录故障发生的系统状态,有助于分析原因
    三、用什么方式写
    日志的分类:DEBUG|INFO|WARN|ERROR|FATAL
    业务需求不同,应当事先对可能出现的问题加以归类
    四、懒人写日志
    开发用DEBUG,测试上线用INFO,所以DEBUG的日志就不应当出现在开发期间,以便于快速查询问题。

    【lazy ideas in programming】
    concept: delay the task to the necessary time, to avoid repeat calculate.
    GoF(Gang of Four:a team created the System design patterns)
    23种设计模式种很多模式贯穿了该思想,单例模式和代理模式比较明显:
    -1- 单例模式:两种实现模式,第一种调用前创建好单例对象,第二种调用时生成(lazy way)
    -2- 代理模式:两种实现模式,第一种远程代理,第二种虚代理(lazy loading)
    Web开发中的懒惰加载和懒惰型预加载:
    分页、轮播图、瀑布流,都体现了惰性加载的思想。

    五、其他问题
    1、写日志的代码应当0异常
    2、日志输出的消耗如果不能忽略不计,那么值得优化
    => 可以采用异步日志的方式防止线程阻塞

    六、Python logging
    Gregory使用的是Apache的Log4j,具体使用看文档就好了。

  • 相关阅读:
    lldb
    错误记录
    越狱后
    c#学习
    26python类
    day01
    第二冲刺阶段第四天
    第二冲刺阶段第三天
    第五周课后作业
    结对作业
  • 原文地址:https://www.cnblogs.com/Years4Nancy/p/8329069.html
Copyright © 2011-2022 走看看