為了更細(xì)粒度的日志我們可以同時(shí)使用幾種logger。不同的軟件組件可以使用不同的logger。
下面的例子來自一個(gè)視頻錄制應(yīng)用:
Logger videologger = Logger . getLogger ( " se .matangle . video" ) ;
logger .warn ( " disk is dangerously low " )
我們可以使用幾種不同的日志等級(jí),為我們的日志增加更大的明確性
log4j的術(shù)語來說,日志消息最后結(jié)尾的地方被稱為appender。有很多可用的
appender,比如控制臺(tái)、文件、網(wǎng)絡(luò)目標(biāo)地址和logger后臺(tái)進(jìn)程。
布局控制我們的日志信息格式。這允許我們使用類似printf的轉(zhuǎn)義序列格式。
下面是模式中每個(gè)字段代表的意思:
* 第一個(gè)字段是從程序開始運(yùn)行后經(jīng)過的時(shí)間,以微秒計(jì)算。
* 第二個(gè)字段是發(fā)起日志請(qǐng)求的線程。
* 第三個(gè)字段是曰志語句的等級(jí)。
* 第四個(gè)字段是和日志請(qǐng)求關(guān)聯(lián)的logger名字。
* ”之后的文本是消息語句。
Log4j努力讓日志的配置暴露給外部的應(yīng)用。這樣開發(fā)人員就可以通過在文件或者控制臺(tái)配置讓日志在本地工作。隨后,當(dāng)應(yīng)用被部署在產(chǎn)品服務(wù)器時(shí),管理員可以將日志的appender配置為其他東西,比如我們后面要討論的ELK。這種方式不需要修改代碼,而且我們在部署的時(shí)候可以修改日志的行為和目的地。
WildFly這樣的應(yīng)用服務(wù)器通過實(shí)現(xiàn)log4j系統(tǒng)插件為自己提供配置系統(tǒng)。
如果你不使用應(yīng)用服務(wù)器也沒關(guān)系,log4j的新版本支持很多不同的配置格式。下面是
一個(gè)XML格式的文件,它會(huì)在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>