Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码(百度百科)。
Log4j的组成:Log4j由三个重要的组成构成:日志记录器(Loggers),输出端(Appenders)和日志格式化器(Layout)。
1.日志记录器(Loggers):控制要输出哪些日志记录语句,对日志信息进行级别限制。
2.输出端(Appenders):指定了日志将打印到控制台还是文件中。
3.日志格式化器(Layout):控制日志信息的显示格式。
配置文件(log4j.properties)解析
1、配置根Logger
其语法为:log4j.rootLogger = [ level ] , [appenderName], [appenderName], …
level 是日志记录的类别,appenderName就是指定日志信息输出到哪个地方,您可以同时指定多个输出目的地。
Log4j建议只使用四个级别, 优先级ERROR>WARN>INFO>DEBUG 。通过在这里定义的级别,可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。
Log4j建议只使用四个级别, 优先级ERROR>WARN>INFO>DEBUG 。通过在这里定义的级别,可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。
举例说明:
log4j.rootLogger = [ level ] , appenderName, appenderName, …
如果为log4j.rootLogger=WARN,则意味着只有WARN,ERROR被输出,DEBUG,INFO将被屏蔽掉。
举例:log4j.rootCategory=INFO,stdout,Runlog,Errorlog
根日志类别为INFO,DEBUG将被屏蔽,其他的将被输出。 stdout,Runlog,Errorlog分别为3个输出目的
2、配置Appender(日志信息输出目的地)
其语法为:log4j.appender.[appenderName] = [appenderType]
其中,Log4j提供的appender有以下几种:
org.apache.log4j.ConsoleAppender:输出到控制台
org.apache.log4j.FileAppender:输出到日志文件,使用一个日志文件,没有大小限制
org.apache.log4j.DailyRollingFileAppender:输出到日志文件,每天产生一个日志文件
org.apache.log4j.RollingFileAppender:输出到日志文件,如果文件大小到达指定尺寸的时候,则产生一个新的文件
org.apache.log4j.WriterAppender:将日志信息以字符串流的格式发送到指定的任意地方
其语法为:log4j.appender.[appenderName] = [appenderType]
其中,Log4j提供的appender有以下几种:
org.apache.log4j.ConsoleAppender:输出到控制台
org.apache.log4j.FileAppender:输出到日志文件,使用一个日志文件,没有大小限制
org.apache.log4j.DailyRollingFileAppender:输出到日志文件,每天产生一个日志文件
org.apache.log4j.RollingFileAppender:输出到日志文件,如果文件大小到达指定尺寸的时候,则产生一个新的文件
org.apache.log4j.WriterAppender:将日志信息以字符串流的格式发送到指定的任意地方
org.apache.log4j.WriterAppender:将日志信息以字符串流的格式发送到指定的任意地方
org.apache.log4j.jdbc.JDBCAppender:将日志文件输出到数据库中
org.apache.log4j.jdbc.JDBCAppender:将日志文件输出到数据库中
org.apache.log4j.net.SMTPAppende:将日志文件输出到邮件
3、配置日志信息的格式(布局)
其语法为:log4j.appender.[appenderName].layout = [layoutType]
Log4j提供的layout有以下几种:
org.apache.log4j.HTMLLayout:以HTML表格形式布局
org.apache.log4j.PatternLayout:可以灵活地指定布局模式(常用配置)
org.apache.log4j.SimpleLayout:包含日志信息的级别和信息字符串
org.apache.log4j.TTCCLayout:包含日志产生的时间、线程、类别等等信息
3、配置日志信息的格式(布局)
其语法为:log4j.appender.[appenderName].layout = [layoutType]
Log4j提供的layout有以下几种:
org.apache.log4j.HTMLLayout:以HTML表格形式布局
org.apache.log4j.PatternLayout:可以灵活地指定布局模式(常用配置)
org.apache.log4j.SimpleLayout:包含日志信息的级别和信息字符串
org.apache.log4j.TTCCLayout:包含日志产生的时间、线程、类别等等信息
4、log4j采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下:
-X号:X信息输出时左对齐;
%m:输出代码中指定的消息
%p:输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%r:输出自应用启动到输出该log信息耗费的毫秒数
%c:输出所属的类目,通常就是所在类的全名
%t:输出产生该日志事件的线程名
%n:输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
%d:输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2015年07月16日 22:10:28,921
%l:输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)
%r:输出自应用启动到输出该log信息耗费的毫秒数
%c:输出所属的类目,通常就是所在类的全名
%t:输出产生该日志事件的线程名
%n:输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
%d:输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2015年07月16日 22:10:28,921
%l:输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)
5、log4j配置示例
举例:
输出到控制台
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.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(指定输出的格式)
输出到文件(轮换"日志文件",当日志文件达到指定大小时,该文件就被关闭并备份,然后创建一个新的日志文件)
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(指定输出到Socket)
log4j.appender.SOCKET.RemoteHost=localhost(远程主机)
log4j.appender.SOCKET.Port=5001(远程主机端口)
log4j.appender.SOCKET.LocationInfo=true
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(输出格式)
输出到邮件
log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender(指定输出到邮件)
log4j.appender.MAIL.Threshold=FATAL
log4j.appender.MAIL.BufferSize=10
log4j.appender.MAIL.From=chenyl@hollycrm.com(发件人)
log4j.appender.MAIL.SMTPHost=mail.hollycrm.com(SMTP服务器)
log4j.appender.MAIL.Subject=Log4J Message
log4j.appender.MAIL.To=chenyl@hollycrm.com(收件人)
log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout(布局)
log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n(格式)
输出到数据库
log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender(指定输出到数据库)
log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test(指定数据库URL)
log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver(指定数据库driver)
log4j.appender.DATABASE.user=root(指定数据库用户)
log4j.appender.DATABASE.password=root(指定数据库用户密码)
log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')(组织SQL语句)
log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout(布局)
log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n(格式)
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.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(指定输出的格式)
输出到文件(轮换"日志文件",当日志文件达到指定大小时,该文件就被关闭并备份,然后创建一个新的日志文件)
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(指定输出到Socket)
log4j.appender.SOCKET.RemoteHost=localhost(远程主机)
log4j.appender.SOCKET.Port=5001(远程主机端口)
log4j.appender.SOCKET.LocationInfo=true
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(输出格式)
输出到邮件
log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender(指定输出到邮件)
log4j.appender.MAIL.Threshold=FATAL
log4j.appender.MAIL.BufferSize=10
log4j.appender.MAIL.From=chenyl@hollycrm.com(发件人)
log4j.appender.MAIL.SMTPHost=mail.hollycrm.com(SMTP服务器)
log4j.appender.MAIL.Subject=Log4J Message
log4j.appender.MAIL.To=chenyl@hollycrm.com(收件人)
log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout(布局)
log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n(格式)
输出到数据库
log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender(指定输出到数据库)
log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test(指定数据库URL)
log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver(指定数据库driver)
log4j.appender.DATABASE.user=root(指定数据库用户)
log4j.appender.DATABASE.password=root(指定数据库用户密码)
log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')(组织SQL语句)
log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout(布局)
log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n(格式)
相关推荐
`log4j.properties`是Apache Log4j框架中用于配置日志记录行为的核心文件之一。通过这个文件,开发者可以定义日志消息的输出方式(例如控制台或文件)、日志级别(如DEBUG、INFO等)以及日志格式等内容。正确配置`...
Log4j是一个广泛使用的Java日志记录框架,它允许开发者在应用程序中插入日志语句,以便跟踪程序的...它通过`log4j.jar`提供核心功能,通过`log4j.properties`进行个性化配置,为开发者提供了一套完整的日志解决方案。
`log4j.properties`是Log4j的配置文件,用于定义日志的级别、输出方式和格式。配置文件采用键值对的形式,每行代表一个配置项。 **3. 完整版`log4j.properties`** 在完整版的`log4j.properties`中,通常包含以下...
### Log4j.properties配置详解 #### 一、Log4j配置文件基本概念 Log4j是一种广泛应用于Java应用程序的日志框架,它可以帮助开发者轻松管理应用程序的日志记录过程。Log4j支持多种配置方式,其中.properties文件...
在本文中,我们将详细介绍 Log4j 的配置,包括配置步骤、log4j.properties 配置文件、日志输出级别、appenders 和 layouts 等。 一、配置步骤 要使用 Log4j,需要遵循以下配置步骤: 1. 在应用程序中使用 Log4j,...
Log4j 是一个功能强大且广泛使用的日志记录工具,特别是在 SSM(Spring、Spring MVC、Mybatis)整合项目中,合理地配置 Log4j 对项目的日志记录和输出至关重要。本文将详细介绍 SSM 整合中的 Log4j 配置详情,帮助...
`log4j.properties`是Log4j的配置文件,通过它我们可以定制日志的级别、输出方式、格式等。一个基本的`log4j.properties`配置示例如下: ```properties # 设置全局日志级别 log4j.rootLogger=DEBUG, stdout, R # ...
本文将深入探讨如何在Log4j中实现日志输出路径的动态配置。 首先,我们要理解Log4j的核心组件。Log4j主要包括三个关键部分:Logger(日志器)、Appender(输出器)和Layout(布局)。Logger负责生成日志事件,...
`log4j.properties`配置文件是Log4j的核心,它定义了日志输出的行为,包括日志级别、输出目的地、格式等。以下是一些关键的配置选项: 1. **日志级别(Level)**:日志级别包括DEBUG、INFO、WARN、ERROR和FATAL。...
java开发中 log4j的基本配置,实现日志的记录 java开发中 log4j的基本配置,实现日志的记录
log4j.properties 文件是 Log4j 的核心配置文件,它控制着 Log4j 的行为和日志记录的方式。 在这个配置实例中,我们可以看到,作者对 log4j.properties 文件进行了详细的配置,实现了邮件日志、数据库日志和日志...
log4j.properties log4j log4j日志保存到邮件 log4j保存到数据库
这是log4j框架的配置文件,使用Java Properties格式,用于定义日志输出的行为。主要包括以下几个核心部分: 1. **Logger**: 定义日志级别,例如DEBUG、INFO、WARN、ERROR和FATAL。日志级别决定了哪些信息会被记录。...
- **Appender配置**:在properties文件中,每个appender都有自己的配置,如`log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender`定义了一个滚动日志文件的appender。 3. **日志级别** - **日志级别*...
总结,log4j.properties文件是log4j框架的核心配置,通过它,我们可以定制日志记录的方式、级别和格式,满足不同项目的需求。理解并熟练掌握log4j.properties的配置,对于提升开发效率和问题排查有着极大的帮助。
2. **配置全局 Log4j 属性文件**:在任意位置创建 `log4j.properties` 文件,并设置全局的日志级别、输出格式及存储路径等。通常会将该文件放置在 Tomcat 的 `conf` 目录下。 ```properties log4j.rootLogger=...
在Log4j.properties配置文件中,我们可以通过设置Logger、Appender和Layout来实现日志管理。 1. **Loggers** Loggers是Log4j中的关键组件,它们负责决定哪些信息应该被记录。Log4j提供了五个日志级别,从低到高...
log4j.properties 配置说明 log4j 是 Apache 的一个开放源代码项目,通过使用 Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI 组件、甚至是套接口服务器、NT 的事件记录器、UNIX Syslog 守护进程等;...
在“log4j按功能保存日志”的场景中,我们通常会利用Log4j的配置灵活性,将不同功能的日志分别写入不同的文件,以便于后期分析、排查问题和监控系统状态。 1. **Log4j基本概念** - **Logger**: 日志记录器,是Log4...