使用Log4j的優勢(Log For Java)
- 專門爲Java項目提供日誌工具
- Log4j目標:可以將日誌同時寫到控制檯、文件、數據庫、發郵件、調用網絡接口接口等多個不用的地方。
- Log4j還提供日誌級別可以區分日誌的重要性,對不同級別的日誌可以傳輸到不用的地方或者平時忽略掉不重要的日誌,當系統出現而難題時,還可以在不重啓服務器的情況下將平時忽略掉的信息全部開啓。
- log4j2:會從WEB-INF中查找名字爲log4j2.xml的配置文件。
- 在配置文件中,<configuration status屬性是log4j2自己內部使用的 logger 的日誌輸出界別。如果想讓log4j 將自己內部的日誌信息打印出來,需要將status的級別設置低一些,以便找到log4j自己的錯誤信息
- 日誌級別
-
- Fatal:最高級,表示致命錯誤,當程序遇到這種錯誤時,無法恢復執行,接下來就會崩潰
-
- logger.fatal("致命錯誤的詳細信息i")
- Error:錯誤級,部落到異常時,通過這個級別輸出
-
- logger.error("錯誤消息",exception)
- warn:警告級,當程序執行時,遇到不應該執行的代碼或不應該出現情況時,通過這個級別輸出
-
- 比如,Pager類中total = 0 時,
- logger.warn("警告信息")
- Info:消息/數據級,輸出一些業務數據,向外部提供數據信息
- Debug:調試級,輸出程序執行過程中的關鍵數據(更詳細的數據,甚至是方法內部的局部變量或參數的值)目的是方便查找bug
- trace:跟蹤級,輸出更加詳細的信息,最細緻信息,通過Trace信息可以看到程序執行的每一個步驟,及程序當前所處的狀態細節
<?xml
version="1.0"
encoding="UTF-8"?>
<!--status :log4j 內部的日誌級別 monitorInterval:檢查配置是否被修改的時間間隔 -->
<configuration
status="trace"
monitorInterval="3">
<!--配置日誌追加功能,將日誌追加到控制檯或文件裏面
-->
<appenders>
、
<!-- 配置控制檯輸出的日誌內容 -->
<Console
name="Console"
target="SYSTEM_OUT">
<!--控制日誌級別 -->
<ThresholdFilter
level="trace"
onMatch="ACCEPT" onMismatch="DENY"
/>
<!--定義了輸出的錯誤信息的格式和
內容 -->
<PatternLayout
pattern="%d{HH:mm:ss.SSS}
%-5level %C %L %M - %msg%xEx%n"
/>
</Console>
<!-- 控制日誌文件的存儲位置和大小控制
-->
<RollingFile
name="RollingFile"
fileName="${web:rootDir}/logs/app.log"
filePattern="${web:rootDir}/logs/$${date:yyyy-MM-dd}/app-%d{yyyy-MM-dd}-%i.log">
<!-- 日誌文件的內容和格式控制
-->
<PatternLayout
pattern="%d{yyyy-MM-dd
'at' HH:mm:ss z} %-5level %C %L %M - %msg%xEx%n"
/>
<!-- 大小控制 -->
<SizeBasedTriggeringPolicy
size="100KB"
/>
</RollingFile>
</appenders>
<!-- 日誌記錄器 -->
<loggers>
<!-- 日誌記錄的根節點,默認的記錄器,此處可配置多個記錄器,這裏只配置了
Console、 RollingFile -->
<root
level="trace">
<appender-ref
ref="RollingFile"
/>
<appender-ref
ref="Console"
/>
</root>
</loggers>