# log4j2設定參考 log4j2 在專屬的 log4j2.xml 內調控要顯示的 log 層級,全域及區域客製化的都在這設定 全域表示整個專案適用的設定,而區域則代表對於特定package想做的客製化設定 以下面的 xml 為例,各區塊的最低 log 層級在 <Loggers> 內做設定 全域設定為 <Root level="INFO">,代表沒特別指定的話,最底限最輸出 INFO 等級以上的 log,低於就不輸出了 區域設定為下面各條 <Logger> 內設定,name 表示指定哪個路徑下的 java 檔案適用此設定,而 level 則指定最低輸出等級 最後,<Property name="logHome" value="C:/log" />,這串是指定 log 儲存的路徑 <?xml version="1.0" encoding="UTF-8"?> <Configuration status="warn"> <Properties> <Property name="logHome" value="C:/log" /> </Properties> <Appenders> <Console name="console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p [%c] [%M] %m%n" /> </Console> <RollingFile name="tss" fileName="${logHome}/tss-batch.log" filePattern="${logHome}/tss-batch.log.%d{yyyy-MM-dd}" append="true"> <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p [%c] [%M] %m%n" charset="UTF-8" /> <Policies> <TimeBasedTriggeringPolicy interval="1" modulate="true" /> </Policies> </RollingFile> </Appenders> <Loggers> <Root level="INFO"> <AppenderRef ref="console" /> <AppenderRef ref="tss" /> </Root> <Logger name="org.springframework" level="ERROR" /> <Logger name="org.apache.commons" level="ERROR" /> <Logger name="com.ts.tss.core.db.tss.dao" level="DEBUG" /> <Logger name="log4j.logger.java.sql" level="DEBUG" /> </Loggers> </Configuration> ### Log日誌级别 共有8個级别,按照從低到高為: All < Trace < Debug < Info < Warn < Error < Fatal < OFF All: 最低等级,可開啟所有日誌紀錄 Trace: 追蹤等級,用來trace程式過程中的輸出 Debug: 顯示較細節資訊 Info: 顯示程式運作過程,省略一些細節 Warn: 輸出警告等級的內容,未必會出事但要注意 Error: 輸出錯誤等級的內容,表示出事了 Fatal: 嚴重到會使應用程式中斷的事件 OFF: 最高等級日誌,會關閉所有日誌紀錄 xml 層級設定是在設定層級的最下限,所以比如指定 warn 層級,那比 warn 嚴重的 error 自然會被記錄,而 info、debug 這些較低層級的就會略過 ### 使用時可用大括弧{}來代入參數 例如: log.info("Your var is {} and you are {}", var1, var2); ""內出現幾次{},在""後加,,就可以開始放多個參數(中間一樣,分隔) 雖然也可以寫成: log.info("Your vars are :" + var1+ " " + var2); 但這會使得它們直接組成一字串、彈性也比較低(參數只能放尾段),而且非String參數需要轉型,所以總結來說較建議上一段的作法 ###### tags: `Java`