• 深入理解Logger日志——简介


    Logger日志

      日志主要是记录系统中相关问题及事件信息,可以通过这些信息排查错误的发生原因,一些事件的追踪,业务逻辑统计分析。好的日志可以省去开发者一大半的时间。

      在个人那么多天的研究中,从开始对Logger一无所知,或者说有愚蠢的想法(不就简单的打印日志而已),到现在发现Logger体系如此美妙绝伦。


    Logger日志常用框架

      常用的实现框架:

    • Log4j:Apache的开源项目,是一个功能强大的日志组件,提供方便的日志记录。
           <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <version>1.7.29</version>
            </dependency>
    View Code
    • Logback:Logback是由log4j创始人设计的又一个开源日志组件。logback当前分成三个模块:logback-core,logback- classic和logback-access
            
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-classic</artifactId>
                <version>1.2.3</version>
            </dependency>
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-core</artifactId>
                <version>1.2.3</version>
            </dependency>    
    View Code
    • Log4j2:是log4j 1.x 的升级版,参考了Logback的一些优秀的设计,并且修复了一些问题,采取异步日志模式,解决了因日志造成的性能问题,带来了一些重大的提升。(值得推荐)
        <dependency>
          <groupId>org.apache.logging.log4j</groupId>
          <artifactId>log4j-api</artifactId>
          <version>${log4j2.version}</version>
        </dependency>
        <dependency>
          <groupId>org.apache.logging.log4j</groupId>
          <artifactId>log4j-core</artifactId>
          <version>${log4j2.version}</version>
        </dependency>
        <dependency>
          <groupId>org.apache.logging.log4j</groupId>
          <artifactId>log4j-slf4j-impl</artifactId>
          <version>${log4j2.version}</version>
        </dependency>
        <dependency>
          <groupId>org.apache.logging.log4j</groupId>
          <artifactId>log4j-jcl</artifactId>
          <version>${log4j2.version}</version>
        </dependency>
    View Code
    • Common-logging:是apache提供的一个通用的日志接口。用户可以通过配置自由选择第三方的日志组件作为具体实现。
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.2</version>
    </dependency>
    View Code
    • Slf4j:类似于Apache Common-Logging,j是一个门面适配器,所有的日志代码都可以用slf4j方式,它会根据项目具体依赖的日志实现包进行日志操作,只需修改pom.xml文件中的日志实现依赖(已做好桥接包)
        <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
         <version>1.7.21</version>
    View Code

      还有好多其他的框架不再一一介绍,使用什么框架主要还是看项目和人所适合的方向。

    常用日志框架的性能比较--参考连接

     


    Logger日志等级描述

       对于标准级别它们关系如下:ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF

      之后我会对等级的动态调整做相应的文章进一步介绍


    日志规约——参考阿里嵩山版

    1. 应用中不可直接使用日志系统(Log4j、Logback)中的 API,而应依赖使用日志框架中的 API,使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。
    2. 在日志输出时,字符串变量之间的拼接使用占位符的方式。
      logger.debug("Processing trade with id: {} and symbol: {}", id, symbol);
    3. 避免重复打印日志,浪费磁盘空间,务必在日志配置文件中设置 additivity=false。
        <logger name="com.taobao.dubbo.config" additivity="false">
    4. 生产环境禁止直接使用 System.out 或 System.err 输出日志或使用,
      标准日志输出与标准错误输出文件每次 Jboss 重启时才滚动,如果大量输出送往这两个文件,容易
      造成文件大小超过操作系统大小限制。
    5. 日志打印时禁止直接用 JSON 工具将对象转换成 String。
      如果对象里某些 get 方法被覆写,存在抛出异常的情况,则可能会因为打印日志而影响正常业务流
      程的执行。
    6. 谨慎地记录日志。生产环境禁止输出 debug 日志;有选择地输出 info 日志;如果使用warn 来记录刚上线时的业务行为信息,一定要注意日志输出量的问题,避免把服务器磁盘撑
      爆,并记得及时删除这些观察日志。
  • 相关阅读:
    .NET中非对称加密RSA算法的密钥保存
    WGS84经纬度坐标到北京54高斯投影坐标的转换[转]
    [APPS] HTC Footprints & HTC Locations for MikG 2.x Read more:
    firefox+ssh无法看youtube视频的解决方案
    【转】sdemon命令实践
    How to share a custom ArcMap command (DLL)
    【转】sdemon命令实践
    红旗桌面版本最新运用法子和结果解答100例8
    红旗Linux桌面4.1文本安装过程图解(二)
    Ubuntu把在效能器范畴起更重要的脚色
  • 原文地址:https://www.cnblogs.com/zhouguanglin/p/13803918.html
Copyright © 2020-2023  润新知