參考: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");