為了更細粒度的日志我們可以同時使用幾種logger。不同的軟件組件可以使用不同的logger。
下面的例子來自一個視頻錄制應用:
Logger videologger = Logger . getLogger ( " se .matangle . video" ) ;
logger .warn ( " disk is dangerously low " )
我們可以使用幾種不同的日志等級,為我們的日志增加更大的明確性
log4j的術語來說,日志消息最后結尾的地方被稱為appender。有很多可用的
appender,比如控制臺、文件、網絡目標地址和logger后臺進程。
布局控制我們的日志信息格式。這允許我們使用類似printf的轉義序列格式。
下面是模式中每個字段代表的意思:
* 第一個字段是從程序開始運行后經過的時間,以微秒計算。
* 第二個字段是發(fā)起日志請求的線程。
* 第三個字段是曰志語句的等級。
* 第四個字段是和日志請求關聯的logger名字。
* ”之后的文本是消息語句。
Log4j努力讓日志的配置暴露給外部的應用。這樣開發(fā)人員就可以通過在文件或者控制臺配置讓日志在本地工作。隨后,當應用被部署在產品服務器時,管理員可以將日志的appender配置為其他東西,比如我們后面要討論的ELK。這種方式不需要修改代碼,而且我們在部署的時候可以修改日志的行為和目的地。
WildFly這樣的應用服務器通過實現log4j系統(tǒng)插件為自己提供配置系統(tǒng)。
如果你不使用應用服務器也沒關系,log4j的新版本支持很多不同的配置格式。下面是
一個XML格式的文件,它會在classpath上尋找log4j2-test.xml文件:
< ?xml version=- "l.O " encoding= "UTF-8 " ?>
<Configuration status="WARN">
<Appenders>
<Console name="Console " target=" SYSTEM OUT" >
<PatternLayout pattern=" d { HH : mm : ss . SSS } [ t ] -51evellogger { 36 } - omsgoon"/>
</Console>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>