在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");

 

 

 

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