• 学习如何写好日志!


    参考资料:
    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,具体使用看文档就好了。

  • 相关阅读:
    《闯关东》群英传
    这老太太
    URL重写与伪静态
    创建索引视图时提示架构绑定无效,名称必须由两部分构成
    马色见
    食神智多星
    Beautiful Code and Beautiful Software
    /wp64 Compiler Option
    C++的x64移植
    Managing the State Data of MFC Modules
  • 原文地址:https://www.cnblogs.com/Years4Nancy/p/8329069.html
Copyright © 2020-2023  润新知