Log4j 配置

2018-02-28 13:40 更新

Log4j教程 - Log4j配置


我們可以通過(guò)設(shè)置Log Level,定義Appender和在配置文件中指定Layout對(duì)象來(lái)配置log4j。

log4j.properties 文件是一個(gè)log4j配置文件,它保留鍵 - 值對(duì)中的屬性。

默認(rèn)情況下, LogManager 在CLASSPATH中查找名為log4j.properties的文件。

log4j.properties語(yǔ)法:

以下代碼顯示了appender X的log4j.properties文件的語(yǔ)法:

# Define the root logger with appender X
log4j.rootLogger = DEBUG, X

# Set the appender named X to be a File appender
log4j.appender.X=org.apache.log4j.FileAppender

# Define the layout for X appender
log4j.appender.X.layout=org.apache.log4j.PatternLayout
log4j.appender.X.layout.conversionPattern=%m%n

log4j支持UNIX風(fēng)格的變量替換,如${variableName}。

以下示例顯示如何創(chuàng)建log4j.properties文件。

它將根記錄器的級(jí)別設(shè)置為DEBUG,并將名為FILE的附加器附加到它。

追加器FILE定義為org.apache.log4j.FileAppender,并寫入位于日志目錄中的名為“l(fā)og.out”的文件。

定義的布局模式為%m%n,這意味著打印的日志消息后面將跟隨換行符。

# Define the root logger with appender file
log4j.rootLogger = DEBUG, FILE

# Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=${log}/log.out

# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n

日志級(jí)別

我們使用DEBUG和兩個(gè)appenders。所有可能的選項(xiàng)是:

  • 跟蹤

  • 調(diào)試

  • 信息

  • 警告

  • 錯(cuò)誤

  • 致命

  • 所有

這些級(jí)別將在Log4j日志記錄級(jí)別中解釋。

追加者

Apache log4j提供了用于將日志消息打印到不同目標(biāo)(如控制臺(tái),文件,套接字,NT事件日志等)的Appender對(duì)象。

每個(gè)Appender對(duì)象都具有與其關(guān)聯(lián)的不同屬性,這些屬性指示該對(duì)象的行為。

屬性 描述
layout Appender使用布局對(duì)象和轉(zhuǎn)換模式來(lái)格式化日志記錄信息。
target 目標(biāo)可以是控制臺(tái),文件或其他項(xiàng)目,具體取決于附加程序。
level 級(jí)別過(guò)濾日志消息。
threshold Appender可以具有閾值級(jí)別,并忽略具有低于閾值級(jí)別的級(jí)別的任何日志記錄消息。
filter Filter對(duì)象決定日志記錄請(qǐng)求是由特定Appender處理還是忽略。

我們可以使用以下方法在配置文件中添加一個(gè)Appender對(duì)象到Logger:

log4j.logger.[logger-name]=level, appender1,appender..n

我們可以用XML格式編寫相同的配置。

<logger name="com.apress.logging.log4j" additivity="false">
   <appender-ref ref="appender1"/>
   <appender-ref ref="appender2"/>
</logger>

要添加Appender對(duì)象,請(qǐng)使用以下方法:

public void addAppender(Appender appender);

addAppender()方法將Appender添加到Logger對(duì)象。我們可以在逗號(hào)分隔的列表中添加許多Appender對(duì)象到記錄器。

所有可能的追加者選項(xiàng)是:

  • AppenderSkeleton

  • AsyncAppender

  • ConsoleAppender

  • DailyRollingFileAppender

  • ExternallyRolledFileAppender

  • FileAppender

  • JDBCAppender

  • JMSAppender

  • LF5Appender

  • NTEventLogAppender

  • NullAppender

  • RollingFileAppender

  • SMTPAppender

  • SocketAppender

  • SocketHubAppender

  • SyslogAppender

  • TelnetAppender

  • WriterAppender

日志布局

我們可以使用下面的布局列表。

  • DateLayout
  • HTMLLayout生成HTML格式的消息。
  • PatternLayout
  • SimpleLayout
  • XMLLayout生成XML格式的消息

輸出到控制臺(tái)

以下log4j.properties顯示如何將信息記錄到控制臺(tái)。

# Root logger option
log4j.rootLogger=INFO, stdout

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

以下xml代碼將重寫上面列出的配置。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="true"
  xmlns:log4j="http://jakarta.apache.org/log4j/">
  <appender name="console" class="org.apache.log4j.ConsoleAppender">
      <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" 
      value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
      </layout>
  </appender>
  <root>
    <level value="DEBUG" />
    <appender-ref ref="console" />
  </root>
</log4j:configuration>

輸出到文件

以下 log4j.properties 顯示如何將信息記錄到文件。

# Root logger option
log4j.rootLogger=INFO, file

# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender

#Redirect to Tomcat logs folder
#log4j.appender.file.File=${catalina.home}/logs/logging.log

log4j.appender.file.File=C:\\my.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

以下xml代碼重寫上面列出的配置。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="true"
  xmlns:log4j="http://jakarta.apache.org/log4j/">
 
  <appender name="file" class="org.apache.log4j.RollingFileAppender">
     <param name="append" value="false" />
     <param name="maxFileSize" value="10KB" />
     <param name="maxBackupIndex" value="5" />
     <!-- For Tomcat -->
     <param name="file" value="${catalina.home}/logs/my.log" />
     <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" 
      value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
     </layout>
  </appender>
 
  <root>
    <level value="ERROR" />
    <appender-ref ref="file" />
  </root>
 
</log4j:configuration>

輸出到控制臺(tái)和文件

以下 log4j.properties 顯示如何將信息記錄到文件和控制臺(tái)。

# Root logger option
log4j.rootLogger=INFO, file, stdout
 
# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=C:\\my.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
 
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

以下xml代碼將重寫上面列出的配置。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="true"
  xmlns:log4j="http://jakarta.apache.org/log4j/">
 
  <appender name="console" class="org.apache.log4j.ConsoleAppender">
      <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" 
      value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
      </layout>
  </appender>
 
  <appender name="file" class="org.apache.log4j.RollingFileAppender">
      <param name="append" value="false" />
      <param name="maxFileSize" value="10MB" />
      <param name="maxBackupIndex" value="10" />
      <param name="file" value="${catalina.home}/logs/my.log" />
      <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" 
      value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
      </layout>
  </appender>
 
  <root>
    <level value="DEBUG" />
    <appender-ref ref="console" />
    <appender-ref ref="file" />
  </root>
 
</log4j:configuration>
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)