日志框架

日志框架的作用

善用日志框架,可以大大降低项目的维护难度。项目的各个流程都用日志来记录细节,一旦出现问题,可以直接在日志里面找原因,有利于问题重现(甚至不用重现就解决问题)。

比如前端显示了一条用户的错误信息。我们可以利用日志依次追踪:后端发送前端数据时是否有问题、后端处理数据前后是否有问题、后端从DB拿数据时是否已经发生错误。按这样的方式去找,很容易找到问题。

所以在日志的使用要多用点心,以后修bug的时候,脱发的情况也少很多。

日志框架的选择

日志抽象层日志实现层
JCL,SLF4j …Log4j,Log4j2,Logback

抽象层只定义供接口,不具体实现。如果使用抽象层则直接使用抽象层,不用抽象层也可以直接使用实现层。JCL是spring默认选择,但SLF4j的占位符的设计令我喜欢,使用SLF4j也是许多人的选择。
实现层就选择目前最受认可的LogBack

SLF4j+Logback的配置和简单使用

maven导入依赖

<!--  Log framwork start-->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.5</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.3</version>
</dependency>
<!--  Log framwork end-->

使用方法

slf4j在StaticLoggerBinder中静态绑定了logback、log4j等框架,所以不需要开发者自己处理。导入后直接可以使用 (SLF4j的字符串输出类似于c语言的格式化输出,{}相当于%s,把变量先用’{}'代替,在字符串结束后,用逗号分隔,按顺序给出变量。这个比直接字符串拼接美观很多,也是SLF4j受欢迎的原因之一)

Logger logger = LoggerFactory.getLogger(this.getClass());
logger.info("{} visit maoni forum",requests.getRemoteHost());

效果

2019-05-30 19:54:33.213  INFO 17560 --- [nio-8080-exec-1] com.maoni.forum.controller.HelloTest     : 0:0:0:0:0:0:0:1 visit maoni forum

详解日志使用描述

日志级别

一般设置日志输出级别后,只有大于等于这个级别才会输出,比如输出级别为debug,那么trace的输出就不会显示或打印到日志文本里。如果production的输出环境为debug,那么自己在测试的时候可以先调成trace输出级别,然后使用trace输出测试内容。测完之后不用撤回代码,把日志输出级别调回到debug就行。下次如果如果还要测试同样的内容,不用再写一次测试内容的输出。接下来从高到低级别介绍。

  • fatal
    用来表示非常严重的错误。若系统继续运行,后果很严重。logback里最高级别,不过slf4j取消了这个级别。
  • error
    出现错误,导致部分乃至整个系统运行异常。
  • warn
    警告,不过系统仍可正常运行。
  • info
    按项目流程,用来输出有意义的信息。
  • debug
    用来输出开发者可能想要,但不一定有用的信息。一般生产环境的日志输出是info或debug级别
  • trace
    级别最低。如果生产环境为debug级别,希望在没有影响的情况下保留数据输出的代码,就可以使用trace。

logback配置

配置文件的优先级:logback.groovy > logback-test.xml > logback.xml。

logback.xml

<?xml version="1.0" encoding="UTF-8"?>  
<configuration>  
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">  
        <encoder>  
            <pattern>%d{yy.MM.dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>  
        </encoder>  
    </appender>  
    <logger name="org.exam" level="debug" />  
    <logger name="org.springframework.beans.factory" level="info" />  
    <root level="warn">  
        <appender-ref ref="console"/>  
    </root>  
</configuration>

更详细的信息可以看看这个博客
https://www.cnblogs.com/warking/p/5710303.html
或者官网信息
http://logback.qos.ch/documentation.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值