配置文件:
l 配置文件要放在/web-inf/classes(eclipse下可以放在src下面)下面或者应用程序的项目根目录下面
l 名称为:log4j.properties
l 几个重要的配置:
Log4j.rootLogger=级别,输出源1,输出源2……
1. 级别:DEBUG<INIFO<WARN<ERROR<FATAL
2. 规格:如果一条日志信息的级别大于等于配置文件的级别,就记录
3. 常见输出源:CONSOLE,FILE
4. 例子:log4j.tootLogger=WARN,CONSOLE,FILE
5. 当用户调用logger.debug(“aaa”)时,信息不会打印到控制台和文件
6. 当用户调用logger.Error(“aaa”)时,信息会打印到控制台和文件
接下来还要对各种输出源的配置
日志布局:
Tips:
1. 调试时,将项目的log级别定低一些,实际运行时可以将log级别定高一些,屏蔽掉调试时要输出的信息
2. 推荐使用异常集中处理和日志集中处理专门定义一个类来负责处理各种类型的异常以及相应的日志操作
3. 项目运行时,可以(1)设置多个日志文件分别存储不同级别的日志信息 (2)可以按照时间定期生成不同的日志文件,用到日期滚动日志
4. 项目中,不要用system.out.println(“”);来跟踪程序的运行过程。
log4j配置详解
Log 日志包
log4j.appender.consoleAppender = org.apache.log4j.ConsoleAppender
log4j.appender.logfile = org.apache.log4j.DailyRollingFileAppender
ConsoleAppender,控制台输出
FileAppender,文件日志输出
SMTPAppender,发邮件输出日志
SocketAppender,Socket日志
NTEventLogAppender,Window NT日志
SyslogAppender,
JMSAppender,
AsyncAppender,
NullAppender
文件输出:RollingFileAppender
log4j.rootLogger = INFO,logfile
log4j.appender.logfile = org.apache.log4j.RollingFileAppender
log4j.appender.logfile.Threshold = INFO // 输出以上的INFO信息
log4j.appender.logfile.File = .. / logs / INFO_log // 保存log文件路径
log4j.appender.logfile.Append = true // 默认为true,添加到末尾,false在每次启动时进行覆盖
log4j.appender.logfile.MaxFileSize = 10KB // 一个log文件的大小,超过这个大小就又会生成1个日志 // KB ,MB,GB
log4j.appender.logfile.MaxBackupIndex = 3 // 最多保存3个文件备份
log4j.appender.logfile.layout = org.apache.log4j.HTMLLayout // 输出文件的格式
log4j.appender.logfile.layout.LocationInfo = true #是否显示类名和行数
log4j.appender.logfile.layout.Title = 页面title #html页面的 < title >
############################## SampleLayout ####################################
# log4j.appender.logfile.layout = org.apache.log4j.SampleLayout
############################## PatternLayout ###################################
# log4j.appender.logfile.layout = org.apache.log4j.PatternLayout
# log4j.appender.logfile.layout.ConversionPattern =% d % p [ % c] - % m % n % d
############################## XMLLayout #######################################
# log4j.appender.logfile.layout = org.apache.log4j.XMLLayout
# log4j.appender.logfile.layout.LocationInfo = true #是否显示类名和行数
############################## TTCCLayout ######################################
# log4j.appender.logfile.layout = org.apache.log4j.TTCCLayout
# log4j.appender.logfile.layout.DateFormat = ISO8601
#NULL, RELATIVE, ABSOLUTE, DATE or ISO8601.
# log4j.appender.logfile.layout.TimeZoneID = GMT - 8 : 00
# log4j.appender.logfile.layout.CategoryPrefixing = false ##默认为true 打印类别名
# log4j.appender.logfile.layout.ContextPrinting = false ##默认为true 打印上下文信息
# log4j.appender.logfile.layout.ThreadPrinting = false ##默认为true 打印线程名
# 打印信息如下:
2007 - 09 - 13 14 : 45 : 39 , 765 [http - 8080 - 1 ] ERROR com.poxool.test.test - error成功关闭链接
###############################################################################
每天文件的输出:DailyRollingFileAppender
log4j.rootLogger = INFO,errorlogfile
log4j.appender.errorlogfile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.errorlogfile.Threshold = ERROR
log4j.appender.errorlogfile.File = .. / logs / ERROR_log
log4j.appender.errorlogfile.Append = true #默认为true,添加到末尾,false在每次启动时进行覆盖
log4j.appender.errorlogfile.ImmediateFlush = true #直接输出,不进行缓存
# ' . ' yyyy - MM: 每个月更新一个log日志
# ' . ' yyyy - ww: 每个星期更新一个log日志
# ' . ' yyyy - MM - dd: 每天更新一个log日志
# ' . ' yyyy - MM - dd - a: 每天的午夜和正午更新一个log日志
# ' . ' yyyy - MM - dd - HH: 每小时更新一个log日志
# ' . ' yyyy - MM - dd - HH - mm: 每分钟更新一个log日志
log4j.appender.errorlogfile.DatePattern = ' . ' yyyy - MM - dd ' .log ' #文件名称的格式
log4j.appender.errorlogfile.layout = org.apache.log4j.PatternLayout
log4j.appender.errorlogfile.layout.ConversionPattern =% d % p [ % c] - % m % n % d
控制台输出:
log4j.rootLogger = INFO,consoleAppender
log4j.appender.consoleAppender = org.apache.log4j.ConsoleAppender
log4j.appender.consoleAppender.Threshold = ERROR
log4j.appender.consoleAppender.layout = org.apache.log4j.PatternLayout
log4j.appender.consoleAppender.layout.ConversionPattern =% d %- 5p % m % n
log4j.appender.consoleAppender.ImmediateFlush = true // 直接输出,不进行缓存
log4j.appender.consoleAppender.Target = System.err // 默认是System.out方式输出
转自:http://www.blogjava.net/fine/archive/2008/01/28/178127.html
发送邮件:SMTPAppender
log4j.rootLogger = INFO,MAIL
log4j.appender.MAIL = org.apache.log4j.net.SMTPAppender
log4j.appender.MAIL.Threshold = DEBUG
log4j.appender.MAIL.BufferSize = 10KB
log4j.appender.MAIL.From = yu77585211111@ 163 .com
log4j.appender.MAIL.SMTPHost = mail.myce.net.cn
log4j.appender.MAIL.Subject = Log4J Message
log4j.appender.MAIL.To = yuyongpeng@myce.net.cn
log4j.appender.MAIL.layout = org.apache.log4j.PatternLayout
log4j.appender.MAIL.layout.ConversionPattern =% d - % c -%- 4r [ % t] %- 5p % c % x - % m % n
数据库:JDBCAppender
log4j.appender.DATABASE = org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DATABASE.URL = jdbc:oracle:thin:@ 210.51 . 173.94 : 1521 :YDB
log4j.appender.DATABASE.driver = oracle.jdbc.driver.OracleDriver
log4j.appender.DATABASE.user = ydbuser
log4j.appender.DATABASE.password = ydbuser
log4j.appender.DATABASE.sql = INSERT INTO A1 (TITLE3) VALUES ( ' %d - %c %-5p %c %x - %m%n ' )
log4j.appender.DATABASE.layout = org.apache.log4j.PatternLayout
log4j.appender.DATABASE.layout.ConversionPattern =% d - % c -%- 4r [ % t] %- 5p % c % x - % m % n
1.<!--如果不定义webAppRootKey参数,那么webAppRootKey就是缺省的"webapp.root"。但最好设置,以免项目之间的名称冲突。
定义以后,在Web Container启动时将把ROOT的绝对路径写到系统变量里。
然后log4j的配置文件里就可以用${webName.root }来表示Web目录的绝对路径,把log文件存放于webapp中。
此参数用于后面的“Log4jConfigListener”-->
<!-- log4j config -->
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>webapp.assistpush4ios.root</param-value>
</context-param>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j/log4j.xml
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
2、编写log4j.properties等属性文件,使用web.xml配置的全局变量:
apns.cert.file=${webapp.assistpush4ios.root}\\WEB-INF\\classes\\mail\\apns-cert.p12