小白又來記錄心得了
對於小白來說,好難哇,控制檯輸出很簡單,但是想輸出到文件裏面,研究測試了好久。
使用依賴包:
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.11.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.11.1</version>
</dependency>
初始化Log對象:
private static org.apache.logging.log4j.Logger logger = org.apache.logging.log4j.LogManager.getLogger(MyLogHelper.class);
xml文件配置:
文件名爲log4j2.xml直接存放在資源文件夾resources下面
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<properties>
<property name="LOG_HOME">logs</property>
<property name="LOG_BACKUP">backup</property>
<property name="FILE_NAME">log</property>
</properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level - %msg%n"/>
</Console>
<!--name寫MyLogHelper爲自己封裝的類名-->
<RollingFile name="MyLogHelper" fileName="${LOG_HOME}/${FILE_NAME}.log"
filePattern="${LOG_HOME}/${LOG_BACKUP}/${FILE_NAME}-%d{yyyy-MM-dd}-%i.log"
immediateFlush="true" append="true">
<PatternLayout>
<!--
#pattern格式的簡單介紹:
#%d{HH:mm:ss.SSS} 表示輸出到毫秒的時間,如果不加大括號默認是到毫秒級別
#%r:程序啓動時間毫秒數
#%t:輸出日誌線程名稱
#%-5p:日誌級別,-5表示左對齊並且固定輸出5個字符,如果不足在右邊補空格
#%c:輸出日誌的logger實例名稱,取決於getLogger(String name)中的name屬性,即打印logger時的tag;大括號中的2表示顯示的層數。例如,對於name爲com.test.be.Main的logger,配置爲%c{2}顯示be.Main,配置爲%c{1}則顯示Main。
#%m:日誌內容描述
#%n:換行,一般和%m聯合使用:%m%n
#%l:語句所在的詳細位置, 包括類名、方法名、文件名、行號
#%L:行號,注意和上面小寫的區別,這個只有行號,不包含其他信息
#%F:所在的類文件名,如Main.java
#%M:所在方法名
-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] %msg%n</pattern>
</PatternLayout>
<Policies>
<!-- 每個日誌文件最大5MB 默認10M-->
<SizeBasedTriggeringPolicy size="15MB" />
<!--一天備份一個文件,配合filePattern使用-->
<TimeBasedTriggeringPolicy interval="1"/>
</Policies>
<!--最多保存20個備份文件-->
<DefaultRolloverStrategy max="20" />
</RollingFile>
</Appenders>
<Loggers>
<!-- com.tyyq.log爲自己封裝寫日誌類包路徑, MyLogHelper爲自己封裝的類名-->
<logger name="com.tyyq.log" level="trace" additivity="true">
<appender-ref ref="MyLogHelper" />
</logger>
<Root level="ERROR">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
MyLogHelper.error("我報錯拉!");
MyLogHelper.warn("這是我的警告!");
MyLogHelper.info("這是我說明哦.....");