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