在springMVC中使用logback输出日志

参考:https://my.oschina.net/fenglinyuxi/blog/3019094

参考:https://www.cnblogs.com/gavincoder/p/10091757.html

参考:https://www.cnblogs.com/alterem/p/11343882.html

参考:https://www.jianshu.com/p/4619de4534a7

参考:https://blog.csdn.net/alan_liuyue/article/details/94014603

参考:https://blog.csdn.net/lmx125254/article/details/81477437 ,含输出mybatis日志

1、引入库文件,需要引入slf4j-api.jar,logback-classic.jar,logback-core.jar

maven项目只需添加依赖logback-classic,其他jar文件会自动引入:

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

2、添加配置文件logback.xml,该文件最好配置在classpath下,logback框架启动时会默认加载classpath下的logback.xml文件或者logback-spring.xml文件。

3、分别配置property、appender、logger、root等节点,其中:log文件目录以/开头,表示存入到tomcat所在系统根目录,不以/开头,表示存入tomcat/bin目录,不存在的目录会自动创建,fileNamePattern文件名中的 %d、%i 必须设置,否则不能生成日志文件。内容如下

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <contextName>${app_name}</contextName>
    <property name="app_name" value="atmt"/>
    <property name="log_home" value="/data/atmt_log"/>
    <!-- 在控制台输出日志 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    <!-- 每天备份日志,备份INFO以上级别,除去ERROR -->
    <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${log_home}/${app_name}/info/%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <maxFileSize>10MB</maxFileSize>
            <maxHistory>30</maxHistory>
            <totalSizeCap>10GB</totalSizeCap>
        </rollingPolicy>
        <!--<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log_home}/${app_name}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                 <maxFileSize>1KB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>10</maxHistory>
            <totalSizeCap>3GB</totalSizeCap>
        </rollingPolicy>-->
        <encoder>
            <pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n
            </pattern>
            <charset>UTF-8</charset> <!-- 设置字符集 -->
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>DENY</onMatch>
            <onMismatch>ACCEPT</onMismatch>
        </filter>
    </appender>
    <!--只接受error级别的日志-->
    <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${log_home}/${app_name}/error/%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <maxFileSize>10MB</maxFileSize>
            <maxHistory>30</maxHistory>
            <totalSizeCap>10GB</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n
            </pattern>
            <charset>UTF-8</charset> <!-- 设置字符集 -->
        </encoder>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
    </appender>
    <!-- 异步输出 -->
    <appender name="file_info_async" class="ch.qos.logback.classic.AsyncAppender">
        <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
        <discardingThreshold>0</discardingThreshold>
        <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
        <queueSize>256</queueSize>
        <!-- 为了打印栈堆信息,获取文件和行号 -->
        <includeCallerData>true</includeCallerData>
        <!-- 添加附加的appender,最多只能添加一个 -->
        <appender-ref ref="file_info"/>
    </appender>
    <appender name="file_error_async" class="ch.qos.logback.classic.AsyncAppender">
        <discardingThreshold>0</discardingThreshold>
        <queueSize>256</queueSize>
        <includeCallerData>true</includeCallerData>
        <appender-ref ref="file_error"/>
    </appender>

    <root level="info">
        <appender-ref ref="console"/>
        <appender-ref ref="file_info_async"/>
        <appender-ref ref="file_error_async"/>
    </root>

    <logger name="com.controller" level="INFO" additivity="false">
        <appender-ref ref="console"/>
        <appender-ref ref="file_info_async"/>
        <appender-ref ref="file_error_async"/>
    </logger>

    <!-- 输出sql相关日志,不需要可删除;additivity:是否向上级loger传递打印信息,默认是true-->
    <logger name="org.apache.ibatis" level="INFO" additivity="false" />
    <logger name="org.mybatis.spring" level="INFO" additivity="false" />
    <logger name="com.github.miemiedev.mybatis.paginator" level="INFO" additivity="false" />

</configuration>

4、使用:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

logger.info("test");
logger.warn("test");
logger.debug("test");
logger.error("test");

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章