1.maven依賴
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<!-- <dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>-->
<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
<!-- <scope>test</scope>-->
</dependency>
<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-core -->
<!-- <dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.2.3</version>
</dependency>-->
<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-access -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-access</artifactId>
<version>1.2.3</version>
</dependency>
2.logback.xml
<?xml version="1.0" encoding="utf-8" ?>
<configuration debug="false">
<!--設置日志上下文名稱,后面輸出格式中可以通過定義 %contextName 來打印日志上下文名稱-->
<contextName>sk-log</contextName>
<!--用來設置相關變量,通過key-value的方式配置,然后在后面的配置文件中通過 ${key}來訪問-->
<property name = "sk.name" value ="test"></property>
<!--======================================ConsoleAppender===================================================================-->
<!--日志輸出組件,主要負責日志的輸出以及格式化日志。 stdout:標准輸出-->
<appender name ="stdout" class="ch.qos.logback.core.ConsoleAppender">
<!--定義了一個過濾器,在LEVEL之下的日志輸出不會被打印出來 這個和logger里的level共同決定在stdout輸出的級別(filter非必需的)
臨界值過濾器,過濾掉低於指定臨界值的日志。當日志級別等於或高於臨界值時,過濾器返回NEUTRAL;當日志級別低於臨界值時,日志會被拒絕。 -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>debug</level>
</filter>
<!--級別過濾器,根據日志級別進行過濾。如果日志級別等於配置級別,過濾器會根據onMath 和 onMismatch接收或拒絕日志
<level>:設置過濾級別
<onMatch>:用於配置符合過濾條件的操作
<onMismatch>:用於配置不符合過濾條件的操作-->
<!-- <filter class="ch.qos.logback.classic.filter.LevelFilter">-->
<!-- <level>debug</level>-->
<!-- <onMatch>ACCEPT</onMatch>-->
<!-- <onMismatch>DENY</onMismatch>-->
<!-- </filter>-->
<!-- encoder 默認配置為PatternLayoutEncoder -->
<!--定義控制台輸出格式-->
<!--
%d{yyyy-MM-dd HH:mm:ss} 時間格式 hh是12h制 HH是24h制
[%thread] 線程
%-5level 級別
%logger{36} 日志包 36包長度
[%file : %line] 目標類 和 行數
%msg log信息
%n 換行
(encoder必需的)-->
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} [%file : %line] - %msg%n</pattern>
</encoder>
</appender>
<!--==========================RollingFileAppender===============================================================================-->
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--如果是 true,日志被追加到文件結尾,如果是 false,清空現存文件,默認是true
but 我加了之后 警告 Append mode is mandatory for RollingFileAppender. Defaulting to append=true. 我還是不加了-->
<!-- <append>false</append>-->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>trace</level>
</filter>
<!--rollingPolicy沒寫的話 會有警告 No TriggeringPolicy was set for the RollingFileAppender named file 沒有輸出本地文件-->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>E:/logDemo1/${sk.name}.log.%i.%d{yyyy-MM-dd}</fileNamePattern>
<!--30d周期-->
<maxHistory>30</maxHistory>
<!--每個文件最大10M-->
<maxFileSize>10MB</maxFileSize>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} [%file : %line] - %msg%n</pattern>
</encoder>
</appender>
<!--=========================================================================================================-->
<!--root是默認的logger 這里沒設定輸出級別-->
<root>
<!--定義了appender,日志會通過往appender里面寫-->
<appender-ref ref="stdout"/>
<appender-ref ref="file"/>
</root>
<!--==================================指定包的日志======================================================-->
<!--這個logger沒有指定appender,它會繼承root節點中定義的那些appender -->
<logger name="com.sk" level="info">
<!-- <appender-ref ref="stdout"/>-->
</logger>
<!--通過 LoggerFactory.getLogger("Test3") 可以獲取到這個logger
additivity="false" 沒有它 輸出雙倍 自身的和繼承的root的appender-->
<logger name="Test3" level="trace" additivity="false">
<appender-ref ref="stdout"/>
<appender-ref ref="file"/>
</logger>
<!--由於設置了 additivity="false" ,所以輸出時不會使用rootLogger的appender-->
<!--但是這個logger本身又沒有配置appender,所以使用這個logger輸出日志的話就不會輸出到任何地方-->
<!-- <logger name="Test3" level="trace" additivity="false"></logger>-->
</configuration>
在idea上的截圖。。。(長截圖真好)

3.Test

