1. 程式人生 > >日誌log4j、log4j2

日誌log4j、log4j2

log4j屬性檔案

   

##define an appender named console 日誌附加器,設定輸出位置

log4j.appender.console=org.apache.log4j.ConsoleAppender

#The Target value is System.out or System.err

log4j.appender.console.Target=System.out

#set the layout type of the apperder

log4j.appender.console.layout=org.apache.log4j.PatternLayout

#set the layout format pattern

log4j.appender.console.layout.ConversionPattern=[%-5p][%d{yyyy-MM-dd HH:mm:ss}] %c %L %m%n

   

   

##define a logger 根日誌

#log4j.rootLogger=debug,console,file,rollfile

log4j.rootLogger=debug,console

   

日誌級別

fatal,error,warn,info,debug,trace

   

log4j

匯入jar包和properties檔案,

Logger logger=Logger.getLogger(MyTest.class);

logger.fatal("fatal msg");

logger.error("error msg");

logger.warn("warn msg");

logger.info("info msg");

logger.debug("debug msg");

logger.trace("trace msg");

log4j2

匯入jar包和xml配置檔案

   

log4j
屬性檔案結構分析

為什麼log4j不用呼叫就可以輸出日誌,而log4j2不行?

需要配置log4j2的status屬性

   

status屬性跟level什麼關係?

Configuration.status是log4j2管理log4j2內部輸出資訊,與人為設定的日誌不同;level是管理人為指定的日誌的級別

   

Log4j2配置檔案

<?xmlversion="1.0"encoding="UTF-8"?>

   

<configurationstatus="DEBUG">

<appenders>

<Consolename="myConsole"target="SYSTEM_OUT">

<PatternLayoutpattern="[%-5p][%d{yyyy-MM-ddHH:mm:ss}][%c%L]%m%n"/>

</Console>

</appenders>

   

<loggers>

<!--

<loggername="全限定類名或介面名"level="info">

<appender-refref="myConsole"/>

</logger>

-->

<rootlevel="trace">

<appender-refref="myConsole"/>

<!--<appender-refref="myLogFile"/>

<appender-refref="myRollingFile"/>-->

</root>

</loggers>

   

</configuration>