脚手架之ssm-demo集成logback

    logback是slf4j的原生实现,所以效率是比较高,这里在ssm-demo中集成进来logback,步骤如下:

1、maven集成

在pom.xml文件里面添加如下配置:

 <!-- 日志 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.25</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>

        <!-- 用户web环境查看access日志 -->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-access</artifactId>
            <version>1.2.3</version>
        </dependency>

        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.2.3</version>
        </dependency>

2、配置文件

在src/main/resources目录下,添加logback.xml,内容如下:

<configuration>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!-- encoders are assigned the type
             ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="debug">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>

3、集成tomcat配置

3.1、拷贝logback-core-1.2.3.jar、logback-access-1.2.3.jar文件到$TOMCAT_HOME/lib/目录下

3.2、在$TOMCAT_HOME/conf/目录下,添加logback-access.xml文件,内容如下:

<configuration>
    <!-- always a good activate OnConsoleStatusListener -->
    <statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" />

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%h %l %u %user %date "%r" %s %b</pattern>
        </encoder>
    </appender>

    <appender-ref ref="STDOUT" />
</configuration>

这个文件, 也可以放到项目的src/main/resources目录下

3.3、在web.xml文件下, 添加servlet配置, 内容如下:

<servlet>
        <servlet-name>AccessViewStatusMessages</servlet-name>
        <servlet-class>ch.qos.logback.access.ViewStatusMessagesServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>AccessViewStatusMessages</servlet-name>
        <url-pattern>/lbAccessStatus</url-pattern>
    </servlet-mapping>

3.4、运行项目tomcat,结果如下:

170613_R8rG_1170450.png

可以看到access日志了

4、集成jetty配置

不写了

5、logback流程图

                                 日志记录流程图

    152553_i8G9_1170450.png

                                 日志等级level

5.1、最佳实践

5.1.1、记录日志不要用➕号各种类型,采用占位符(参数化日志)的形式,举例如下:

//不推荐
logger.debug("Entry number: " + i + " is " + String.valueOf(entry[i]));
//推荐
logger.debug("The entry is {}.", entry);

5.1.2、记录日志前, 判断下日志的level是否打开,举例如下:

if(logger.isDebugEnabled()) { 
  logger.debug("Entry number: " + i + " is " + String.valueOf(entry[i]));
}

5.1.3、记录数组, 可以这样, 如下:

Object[] paramArray = {newVal, below, above};
logger.debug("Value {} was inserted between {} and {}.", paramArray);

5.1.4、关闭日志

<root level="off">
    <appender-ref ref="STDOUT" />
</root>

5.1.5、不要在循环中记录日志

5.1.6、日志耗费时间的三个地方:即使日志关闭,也会耗费时间;决定是否需要记录日志;格式化日志成字符串、发结果发给appender的目的地。

 

6、logback日志配置文件查找顺序

在classpath下,查找logback-test.xml

在classpath下,查找logback.groovy

在classpath下,查找logback.xml

查找com.qos.logback.classic.spi.Configurator的实现类型, SPI方式,            

META-INF\services\ch.qos.logback.classic.spi.Configurator  

采用logback的默认实现BasicConfigurator ,只在console记录日志

7、Appender类图

 

代码地址:https://gitee.com/zyx870805/ssm-demo.git

转载于:https://my.oschina.net/u/1170450/blog/1604093

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值