2.2. 输出源的使用
有选择的能用或者禁用日志请求仅仅是Log4j的一部分功能。Log4j允许日志请求被输出到多个输出源。用Log4j的话说,一个输出源被称做一个Appender。
Appender包括console(控制台), files(文件), GUI components(图形的组件), remote socket servers(socket 服务), JMS(java信息服务), NT Event Loggers(NT的事件日志), and remote UNIX Syslog daemons(远程UNIX的后台日志服务)。它也可以做到异步记录。
一个logger可以设置超过一个的appender。
用addAppender 方法添加一个appender到一个给定的logger。对于一个给定的logger它每个生效的日志请求都被转发到该logger所有的appender上和该logger的父辈logger的appender上。
2.2.1. ConsoleAppender
如果使用ConsoleAppender,那么log信息将写到Console。效果等同于直接把信息打印到System.out上了。
2.2.2. FileAppender
使用FileAppender,那么log信息将写到指定的文件中。这应该是比较经常使用到的情况。
相应地,在配置文件中应该指定log输出的文件名。如下配置指定了log文件名为dglog.txt
log4j.appender.A2.File=dglog.txt
注意将A2替换为具体配置中Appender的别名。
2.2.3. DailyRollingAppender
使用FileAppender可以将log信息输出到文件中,但是如果文件太大了读起来就不方便了。这时就可以使用DailyRollingAppender。DailyRollingAppender可以把Log信息输出到按照日期来区分的文件中。配置文件就会每天产生一个log文件,每个log文件只记录当天的log信息:
- log4j.appender.A2=org.apache.log4j.DailyRollingFileAppender
- log4j.appender.A2.file=dglog
- log4j.appender.A2.DatePattern='.'yyyy-MM-dd
- log4j.appender.A2.layout=org.apache.log4j.PatternLayout
- log4j.appender.A2.layout.ConversionPattern= %5r %-5p %c{2} - %m%n
2.2.4. org.apache.log4j.RollingFileAppender
文件大小到达指定尺寸的时候产生一个新的文件。
- log4j.appender.R=org.apache.log4j.RollingFileAppender
- log4j.appender.R.File= ../logs/dglog.log
- # Control the maximum log file size
- log4j.appender.R.MaxFileSize=100KB
- # Archive log files (one backup file here)
- log4j.appender.R.MaxBackupIndex=1
- log4j.appender.R.layout=org.apache.log4j.PatternLayout
- log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
这个配置文件指定了输出源R,是一个轮转日志文件。最大的文件是100KB,当一个日志文件达到最大尺寸时,Log4J会自动把example.log重命名为dglog.log.1,然后重建一个新的dglog.log文件,依次轮转。
2.2.5. org.apache.log4j.WriterAppender
将日志信息以流格式发送到任意指定的地方。
2.3. Layout的配置
Layout指定了log信息输出的样式。
2.3.1. 布局样式
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
2.3.2. 格式
1)%m:消息本身
2)%p:消息的层次,也就是级别DEBUG,INFO,WARN,ERROR,FATAL
3)%r:从程序开始执行到当前日志产生时的时间间隔(微秒)
4)%c:输出当前日志动作所在的category名称(一般是类全名)。例如:如果category名称是"a.b.c","%c{2}"将会输出"b.c";{2}意谓着输出“以点分隔开的category名称的后两个组件”,如果 {n}没有,将会输出整个category名称。
5)%t:输出当前线程的名称
6)%x:输出和当前线程相关联的NDC(具体解释见下文),尤其用到像java servlets这样的多客户多线程的应用中。
7)%n:输出平台相关的换行符。
8)%%:输出一个"%"字符
9)%d:输出日志产生时候的日期,当然可以对日期的格式进行定制。例如%d{yyy MMM dd HH:mm:ss,SSS},输出类似: 2002年10月18日 22:10:28,921 ;如果没有指定后面的格式,将会输出ISO8601的格式。
10)%l:输出位置信息,相当于%C.%M(%F:%L)的组合。包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)
11)%C:输出日志消息产生时所在的类名,如果类名是“test.page.Class1”%C{1}表示输出类名"Class1" ;%C{2}输出"page.Class1";而%C则输出"test.page.Class1"。
12)%M:输出日志消息产生时的方法名称
13)%F:输出日志消息产生时所在的文件名称
14)%L:输出代码中的行号
2.3.3. 例子
例子1:显示日期和log信息
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %m%n
打印的信息是:
2002-11-12 11:49:42,866 SELECT * FROM Role WHERE 1=1 order by createDate desc
例子2:显示日期,log发生地方和log信息
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %l "#" %m%n
2002-11-12 11:51:46,313 cn.net.unet.weboa.system.dao.RoleDAO.select(RoleDAO.java:409) "#"
SELECT * FROM Role WHERE 1=1 order by createDate desc
例子3:显示log级别,时间,调用方法,log信息
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS}
method:%l%n%m%n
log信息:
[DEBUG] 2002-11-12 12:00:57,376
method:cn.net.unet.weboa.system.dao.RoleDAO.select(RoleDAO.java:409)
SELECT * FROM Role WHERE 1=1 order by createDate desc
2.4. 配置文件的例子:
- log4j.rootLogger=DEBUG,CONSOLE,A1,im
- log4j.addivity.org.apache=true
-
- # 应用于控制台
- log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
- log4j.appender.Threshold=DEBUG
- log4j.appender.CONSOLE.Target=System.out
- log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
- log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
- #log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n
-
- #应用于文件
- log4j.appender.FILE=org.apache.log4j.FileAppender
- log4j.appender.FILE.File=file.log
- log4j.appender.FILE.Append=false
- log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
- log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
- # Use this layout for LogFactor 5 analysis
-
-
- # 应用于文件回滚
- log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender
- log4j.appender.ROLLING_FILE.Threshold=ERROR
- log4j.appender.ROLLING_FILE.File=rolling.log
- log4j.appender.ROLLING_FILE.Append=true
- log4j.appender.ROLLING_FILE.MaxFileSize=10KB
- log4j.appender.ROLLING_FILE.MaxBackupIndex=1
- log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
- log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
-
- #应用于socket
- log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender
- log4j.appender.SOCKET.RemoteHost=localhost
- log4j.appender.SOCKET.Port=5001
- log4j.appender.SOCKET.LocationInfo=true
- # Set up for Log Facter 5
- log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout
- log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n
-
-
- # Log Factor 5 Appender
- log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender
- log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000
-
- # 发送日志给邮件
- log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
- log4j.appender.MAIL.Threshold=FATAL
- log4j.appender.MAIL.BufferSize=10
- log4j.appender.MAIL.From=web@www.wuset.com
- log4j.appender.MAIL.SMTPHost=www.wusetu.com
- log4j.appender.MAIL.Subject=Log4J Message
- log4j.appender.MAIL.To=web@www.wusetu.com
- log4j.appender.MAIL.layout=
相关推荐
Log4j 详解 Log4j 是一款功能强大的日志记录工具,广泛应用于 Java 应用程序中。它可以帮助开发人员调试和分析程序,记录程序的运行情况,并提供了灵活的配置方式来控制日志的输出。 Log4j 的概念 Log4j 中有三个...
以下是对Log4j日志的详细讲解: 首先,要在项目中启用Log4j,需要创建一个名为`log4j.properties`的配置文件,将其放在`classes`目录下。这个文件用于定义Log4j的行为,包括日志的级别、输出目的地、格式等。 1. *...
#### 二、Log4j 基本使用流程 ##### 1. 创建 Logger 实例 创建 Logger 实例是使用 Log4j 的第一步。通过调用 `Logger.getLogger(String name)` 方法来创建一个 Logger 对象。通常我们会传入当前类的名字作为参数,...
### Java中log4j的使用方法详解 #### 一、log4j简介 Log4j是Apache的一个开源项目,...以上就是关于Log4j的基本使用方法的详细介绍。通过合理的配置和使用,Log4j可以帮助开发者更高效地管理和调试程序中的日志信息。
#### 四、使用Log4j记录日志 1. **引入Log对象**: ```java protected final Log log = LogFactory.getLog(getClass()); ``` 在Java类中,需要引入Log对象以便记录日志信息。 2. **记录日志信息**: ```...
本文将详细讲解如何在Android项目中集成和使用Log4j。 首先,我们需要理解Log4j的基本概念。Log4j主要包括三个核心组件:Logger(日志器)、Appender(输出器)和Layout(布局)。Logger是日志记录的起点,Appender...
描述中提到的“NULL 博文链接:https://hwei-344370758.iteye.com/blog/1716684”表明可能有一个在线博客文章提供了更详细的解释,但在这个回答中,我们将基于log4j的基本概念和使用方法进行详述,而不依赖于外部...
本文将围绕Log4j的核心配置文件`log4j.properties`进行详细讲解,分为完整版和精简版两个部分。 **1. Log4j基础概念** Log4j由三个主要组件构成:Logger(日志器)、Appender(输出器)和Layout(布局)。Logger...
以下是Log4j的核心组成部分、使用方法以及日志分级的详细解释。 1. **LOG4J组成**: - **Logger**:是Log4j的核心,负责决定哪些日志信息应该被记录和哪些应该被忽略。它根据预定义的级别来过滤日志,由`org....
在提供的`Log4j.ppt`和`Log4j详细解.txt`文件中,你将找到更深入的Log4j使用示例和详细解释,这些资料将帮助你更好地理解和运用Log4j框架,提升你的日志处理能力。通过实践和学习,你可以更加熟练地利用Log4j来监控...
Log4j是Java编程语言中广泛使用的日志记录框架,由Apache软件基金会开发。它提供了一种灵活且高效的方式来管理和记录应用程序的运行时信息,包括错误、警告、调试信息等。在本文中,我们将深入探讨Log4j的基本功能,...
本篇文章将深入探讨Log4j的使用,并通过实例进行讲解。 ### 1. Log4j的基本概念 - **Logger**: 日志器是Log4j的核心组件,负责生成日志消息。你可以根据需要创建多个Logger,每个Logger都有自己的名字和日志级别。...
本文将详细讲解Log4j的配置以及如何在Spring项目中使用Log4j。 **一、Log4j基础知识** 1. **Log4j组件**:Log4j主要由三个核心组件构成——Logger(日志器)、Appender(输出器)和Layout(布局器)。 - Logger:...
Log4j是Apache的一个开源项目,通过使用Log4j,我们可以在Java应用程序中控制日志打印的方式、格式以及输出的目的地。它允许开发者根据级别记录日志信息,使用户能够更加灵活地控制日志的生成。 #### 二、配置方式...
接下来,`log4j配置说明.txt`文件通常会提供更详细的解释和示例,包括如何配置不同的appender(如FileAppender、RollingFileAppender等),如何定义不同logger的级别,以及如何使用自定义的error handler和filter。...
总结来说,这个压缩包提供了log4j的使用教程、配置示例、API文档、Java代码示例以及配置文件的解释,是一个全面学习和使用log4j的资源集合。通过深入研究这些文件,开发者可以掌握如何在自己的Java应用中有效地利用...
总的来说,SLF4J和Log4j的结合使用提供了强大的日志处理能力,使得开发者可以在保持代码简洁的同时,灵活地调整日志输出,便于调试和问题排查。在实际项目中,正确配置和使用这两个工具对于提高开发效率和维护性至关...
10. **使用手册和API**:这两份文档会详细解释上述概念,并提供具体使用示例,帮助开发者更好地理解和利用Log4j的功能。 总的来说,Log4j是一个强大的日志框架,其使用手册和API文档是学习和优化日志处理不可或缺的...