Log4J 的配置文件 (Configuration File) 就是用来设置记录器的级别, 存放器和布局的, 它可接 key=value 格式的设置或 xml 格式的设置信息. 通过配置, 可以创建出 Log4J 的运行环境.
1. 配置文件
Log4J 配置文件的基本格式如下:
- # 配置根 Logger
- log4j.rootLogger = [ level ] , appenderName , appenderName1 , ...
- # 配置日志信息输出目的地 Appender 及 Appender 选项
- log4j.appender.appenderName = fully.qualified.name.of.appender.class
- log4j.appender.appenderName.option = value1
- ...
- log4j.appender.appenderName.optionN = valueN
- # 配置日志信息的格式 (布局) 及格式布局选项
- appender.appenderName.layout = fully.log4j.qualified.name.of.layout.class
- log4j.appender.appenderName.layout.option1 = value1
- ...
- log4j.appender.appenderName.layout.optionN = valueN
其中 [ level ] 是日志输出级别: ERROR,WARN,INFO,DEBUG
ERROR 为严重错误 主要是程序的错误
WARN 为一般警告, 比如 session 丢失
INFO 为一般要显示的信息, 比如登录登出
DEBUG 为程序的调试信息
appenderName 是日志输出位置的配置的命名
log4j.appender.appenderName = fully.qualified.name.of.appender.class 中 fully.qualified.name.of.appender.class 应换上以下信息输出的目的地:
- org.apache.log4j.ConsoleAppender(控制台)
- org.apache.log4j.FileAppender(文件)
- org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
- org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
- org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
appender.appenderName.layout = fully.log4j.qualified.name.of.layout.class 中 fully.qualified.name.of.layout.class 格式布局应换上以下信息:
- org.apache.log4j.htmlLayout(以 HTML 表格形式布局)
- org.apache.log4j.PatternLayout(可以灵活地指定布局模式)
- org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)
- org.apache.log4j.TTCCLayout(包含日志产生的时间, 线程, 类别等等信息)
log4j.appender.appenderName.option 中 option 应替换的属性 / 选项
1.ConsoleAppender 控制台选项
Threshold=DEBUG: 指定日志消息的输出最低层次.
ImmediateFlush=true: 默认值是 true, 意味着所有的消息都会被立即输出.
Target=System.err: 默认情况下是: System.out, 指定输出控制台
2.FileAppender 文件选项
Threshold=DEBUF: 指定日志消息的输出最低层次.
ImmediateFlush=true: 默认值是 true, 意谓着所有的消息都会被立即输出.
File=mylog.txt: 指定消息输出到 mylog.txt 文件.
Append=false: 默认值是 true, 即将消息增加到指定文件中, false 指将消息覆盖指定的文件内容.
3.RollingFileAppender 每天生成一个文件选项
Threshold=DEBUG: 指定日志消息的输出最低层次.
ImmediateFlush=true: 默认值是 true, 意谓着所有的消息都会被立即输出.
File=mylog.txt: 指定消息输出到 mylog.txt 文件.
Append=false: 默认值是 true, 即将消息增加到指定文件中, false 指将消息覆盖指定的文件内容.
MaxFileSize=100KB: 后缀可以是 KB, MB 或者是 GB. 在日志文件到达该大小时, 将会自动滚动, 即将原来的内容移到 mylog.log.1 文件.
MaxBackupIndex=2: 指定可以产生的滚动文件的最大数.
配置示例
- ### 配置根 ###
- log4j.rootLogger = debug,console ,fileAppender,dailyRollingFile,ROLLING_FILE,MAIL,DATABASE
- ### 设置输出 sql 的级别, 其中 logger 后面的内容全部为 jar 包中所包含的包名 ###
- log4j.logger.org.apache=dubug
- log4j.logger.java.sql.Connection=dubug
- log4j.logger.java.sql.Statement=dubug
- log4j.logger.java.sql.PreparedStatement=dubug
- log4j.logger.java.sql.ResultSet=dubug
- ### 配置输出到控制台 ###
- log4j.appender.console = org.apache.log4j.ConsoleAppender
- log4j.appender.console.Target = System.out
- log4j.appender.console.layout = org.apache.log4j.PatternLayout
- log4j.appender.console.layout.ConversionPattern = %d{
- ABSOLUTE
- } %5p %c{
- 1
- }:%L - %m%n
- ### 配置输出到文件 ###
- log4j.appender.fileAppender = org.apache.log4j.FileAppender
- log4j.appender.fileAppender.File = logs/log.log
- log4j.appender.fileAppender.Append = true
- log4j.appender.fileAppender.Threshold = DEBUG
- log4j.appender.fileAppender.layout = org.apache.log4j.PatternLayout
- log4j.appender.fileAppender.layout.ConversionPattern = %-d{
- yyyy-MM-dd HH:mm:ss
- } [ %t:%r ] - [ %p ] %m%n
- ### 配置输出到文件, 并且每天都创建一个文件 ###
- log4j.appender.dailyRollingFile = org.apache.log4j.DailyRollingFileAppender
- log4j.appender.dailyRollingFile.File = logs/log.log
- log4j.appender.dailyRollingFile.Append = true
- log4j.appender.dailyRollingFile.Threshold = DEBUG
- log4j.appender.dailyRollingFile.layout = org.apache.log4j.PatternLayout
- log4j.appender.dailyRollingFile.layout.ConversionPattern = %-d{
- yyyy-MM-dd HH:mm:ss
- } [ %t:%r ] - [ %p ] %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
- ### 配置输出到邮件 ###
- log4j.appender.MAIL=org.apache.log4j.NET.SMTPAppender
- log4j.appender.MAIL.Threshold=FATAL
- log4j.appender.MAIL.BufferSize=10
- [email protected]
- log4j.appender.MAIL.SMTPHost=mail.hollycrm.com
- log4j.appender.MAIL.Subject=Log4J Message
- [email protected]
- 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
- log4j.appender.DATABASE.driver=com.MySQL.jdbc.Driver
- log4j.appender.DATABASE.user=root
- log4j.appender.DATABASE.password=
- log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')
- 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.A1=org.apache.log4j.DailyRollingFileAppender
- log4j.appender.A1.File=SampleMessages.log4j
- log4j.appender.A1.DatePattern=yyyyMMdd-HH'.log4j'
- log4j.appender.A1.layout=org.apache.log4j.xml.XMLLayout
ConversionPattern 日志信息, 符号所代表的含义:
-X 号: X 信息输出时左对齐;
%p: 输出日志信息优先级, 即 DEBUG,INFO,WARN,ERROR,FATAL,
%d: 输出日志时间点的日期或时间, 默认格式为 ISO8601, 也可以在其后指定格式, 比如:%d{yyy MMM dd HH:mm:ss,SSS}, 输出类似: 2002 年 10 月 18 日 22:10:28,921
%r: 输出自应用启动到输出该 log 信息耗费的毫秒数
%c: 输出日志信息所属的类目, 通常就是所在类的全名
%t: 输出产生该日志事件的线程名
%l: 输出日志事件的发生位置, 相当于 %C.%M(%F:%L)的组合, 包括类目名, 发生的线程, 以及在代码中的行数. 举例: Testlog4.main (TestLog4.java:10)
%x: 输出和当前线程相关联的 NDC(嵌套诊断环境), 尤其用到像 java servlets 这样的多客户多线程的应用中.
%%: 输出一个 "%" 字符
%F: 输出日志消息产生时所在的文件名称
%L: 输出代码中的行号
%m: 输出代码中指定的消息, 产生的日志具体信息
%n: 输出一个回车换行符, Windows 平台为 "\r\n",Unix 平台为 "\n" 输出日志信息换行
可以在 % 与模式字符之间加上修饰符来控制其最小宽度, 最大宽度, 和文本的对齐方式. 如:
1) c: 指定输出 category 的名称, 最小的宽度是 20, 如果 category 的名称小于 20 的话, 默认的情况下右对齐.
2)%-20c: 指定输出 category 的名称, 最小的宽度是 20, 如果 category 的名称小于 20 的话,"-" 号指定左对齐.
3)%.30c: 指定输出 category 的名称, 最大的宽度是 30, 如果 category 的名称大于 30 的话, 就会将左边多出的字符截掉, 但小于 30 的话也不会有空格.
4) .30c: 如果 category 的名称小于 20 就补空格, 并且右对齐, 如果其名称长于 30 字符, 就从左边较远输出的字符截掉.
来源: http://www.bubuko.com/infodetail-3280185.html