第三百零四节 Log4j教程 - Log4j配置

Log4j教程 - Log4j配置

我们可以通过设置Log Level,定义Appender和在配置文件中指定Layout对象来配置log4j。

log4j.properties 文件是一个log4j配置文件,它保留键 - 值对中的属性。

默认情况下,LogManager在CLASSPATH中查找名为log4j.properties的文件。

log4j.properties语法:

以下代码显示了appender X的log4j.properties文件的语法:

复制代码
# 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风格的变量替换,如${variableName}。

以下示例显示如何创建log4j.properties文件。

它将根记录器的级别设置为DEBUG,并将名为FILE的附加器附加到它。

追加器FILE定义为org.apache.log4j.FileAppender,并写入位于日志目录中的名为"log.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

日志级别

我们使用DEBUG和两个appenders。所有可能的选项是:

  • 跟踪

  • 调试

  • 信息

  • 警告

  • 错误

  • 致命

  • 所有

这些级别将在Log4j日志记录级别中解释。

追加者

Apache log4j提供了用于将日志消息打印到不同目标(如控制台,文件,套接字,NT事件日志等)的Appender对象。

每个Appender对象都具有与其关联的不同属性,这些属性指示该对象的行为。

属性 描述
layout Appender使用布局对象和转换模式来格式化日志记录信息。
target 目标可以是控制台,文件或其他项目,具体取决于附加程序。
level 级别过滤日志消息。
threshold Appender可以具有阈值级别,并忽略具有低于阈值级别的级别的任何日志记录消息。
filter Filter对象决定日志记录请求是由特定Appender处理还是忽略。

我们可以使用以下方法在配置文件中添加一个Appender对象到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对象,请使用以下方法:

复制代码
public void addAppender(Appender appender);

addAppender()方法将Appender添加到Logger对象。我们可以在逗号分隔的列表中添加许多Appender对象到记录器。

所有可能的追加者选项是:

  • 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格式的消息

输出到控制台

以下log4j.properties显示如何将信息记录到控制台。

复制代码
# 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>

输出到控制台和文件

以下log4j.properties显示如何将信息记录到文件和控制台。

复制代码
# 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>
 
</
相关推荐
w(゚Д゚)w吓洗宝宝了36 分钟前
C vs C++: 一场编程语言的演变与对比
c语言·开发语言·c++
AI人H哥会Java1 小时前
【Spring】Spring的模块架构与生态圈—Spring MVC与Spring WebFlux
java·开发语言·后端·spring·架构
开心工作室_kaic1 小时前
springboot461学生成绩分析和弱项辅助系统设计(论文+源码)_kaic
开发语言·数据库·vue.js·php·apache
毕设资源大全2 小时前
基于SpringBoot+html+vue实现的林业产品推荐系统【源码+文档+数据库文件+包部署成功+答疑解惑问到会为止】
java·数据库·vue.js·spring boot·后端·mysql·html
Watermelon_Mr2 小时前
Spring(三)-SpringWeb-概述、特点、搭建、运行流程、组件、接受请求、获取请求数据、特殊处理、拦截器
java·后端·spring
觉醒的程序猿2 小时前
vue2设置拖拽选中时间区域
开发语言·前端·javascript
明月看潮生2 小时前
青少年编程与数学 02-004 Go语言Web编程 12课题、本地数据存储
开发语言·青少年编程·本地存储·编程与数学·goweb
weisian1512 小时前
Redis篇--常见问题篇3--缓存击穿(数据查询上锁,异步操作,熔断降级,三种缓存问题综合优化策略)
数据库·redis·缓存
圆蛤镇程序猿2 小时前
【什么是事务?】
数据库·oracle
施嘉伟2 小时前
你的Oracle生产数据库遭受过哪些迫害?
数据库·oracle