样例:
log4j.rootLogger=DEBUG,CONSOLE,A1,R,FILE1,FILE2,FILE3
log4j.addivity.org.apache=true
# 应用于控制台
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=INFO
#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.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.File=D\:/log4j.log
log4j.appender.A1.Threshold=DEBUG
log4j.appender.A1.DatePattern='.'yyyy-MM-dd
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}\:%L \: %m%n
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
#每天输出一个日志文件
log4j.appender.R.DatePattern='_'yyyy-MM-dd'.log'
#昨天的日志文件名Sendmsg+“昨天日期”.log
log4j.appender.R.File=D\:/log4j/debusssssg.log
#日志文件的路径,${catalina.home} 即Tomcat下
log4j.appender.R.layout=org.apache.log4j.HTMLLayout
#日志文件输出格式
#log4j.appender.R.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
#应用于文件 (调试文件)
log4j.appender.FILE1=org.apache.log4j.FileAppender
log4j.appender.FILE1.File=D\:/log4j/debug.log
log4j.appender.FILE1.Threshold=DEBUG
log4j.appender.FILE1.Append=true
log4j.appender.FILE1.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE1.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
#应用于文件 (INFO文件)
log4j.appender.FILE2=org.apache.log4j.FileAppender
log4j.appender.FILE2.File=D\:/log4j/INFO.log
log4j.appender.FILE2.Threshold=INFO
log4j.appender.FILE2.Append=true
log4j.appender.FILE2.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE2.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
#应用于文件 (错误文件)
log4j.appender.FILE3=org.apache.log4j.FileAppender
log4j.appender.FILE3.File=D\:/log4j/error.log
log4j.appender.FILE3.Threshold=ERROR
log4j.appender.FILE3.Append=false
log4j.appender.FILE3.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE3.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
1、log4j.rootLogger=INFO,db语法为:
log4j.rootLogger = [ level ] , appenderName1, appenderName2, …
level : 是日志记录的优先级,由高到低分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议只使用四个级别,分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。[level]指定了本日志的最低级别,比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。
appenderName:就是指定日志信息输出到哪个地方。您可以同时指定多个输出目的地。
例如:log4j.rootLogger=info,A1,B2,C3 配置了3个输出地方,这个名字可以任意(如上面的db),但必须与我们在后面进行的设置名字对应;
2、log4j.addivity.org.apache=true/false,作用:children-logger是否使用 rootLogger的配置
示例:
#部分1
log4j.rootLogger=debug,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %5p %t %c%M %l-%m%n
#部分2
log4j.logger.log4jdemo.RollingFileAppenderDemo=debug,rollinglogfile
log4j.additivity.log4jdemo.RollingFileAppenderDemo=false
log4j.appender.rollinglogfile=org.apache.log4j.RollingFileAppender
log4j.appender.rollinglogfile.Append=true
log4j.appender.rollinglogfile.File=rollinglogfile.log
log4j.appender.rollinglogfile.MaxFileSize=200kb
log4j.appender.rollinglogfile.MaxBackupIndex=10
log4j.appender.rollinglogfile.layout=org.apache.log4j.TTCCLayout
部分1规定debug及以上级别的日志会打印在控制台中。
部分2规定debug及以上级别的日志会打印在rollinglogfile.log。
如果additivity为false,那么只生成一个rollinglogfile.log的日志文件,屏幕上没有日志信息输出。
如果additivity为true那么,屏幕上有日志信息显示(因为rootLogger的日志输出终端为stdout-屏幕),而且会生成rollinglogfile.log的日志文件。
additivity在log4j默认为true。这解释了为什么有些时候,一个日志信息在屏幕上会有多次输出。
3、log4j.appender.appenderName1=目标地址
Appender设置日志信息的去向.
常用的Appender:
org.apache.log4j.ConsoleAppender(控制台)
ogr.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
org.apache.log4j.RollingFileAppender(文件大小达到指定尺寸的时候产生一个新的文件)
org.apache.log4j.WiterAppender(将日志讯息一串流格式发送到任意指定的地方)
org.apache.log4j.JDBCAppender(将日志讯息保存到数据库中)
org.apache.log4j.SMTPAppender(将日志信息以邮件的方式发送到指定的地方)
4、log4j.appender.appenderName1.layout=[Layout]
Layout设置日志信息的输出样式.
常用的Layout:
org.apache.log4j.HTMLLayout(一HTML表格形式布局)
org.apache.log4j.SimpleLayout(包含日志讯息的级别和讯息字符串)
org.apache.log4j.TTCCLayout(包含日志产生时间,执行者,类别等讯息)
org.apache.log4j.PatternLayout(可以灵活的指定布局模式)
5、log4j.appender.FILE2.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
这是灵活的指定布局模式定制所输出的日志信息的样式:
%p 输出优先级别:DEBUG,INFO,WARN,ERROR,FATAL
%r 输出字应用启动到输出该日志讯息所耗时秒数
%t 输出产生该日志事件的线程名
%f 输出日志讯息所属的类别的类别名
%c 输出日志讯息所属的类的全名
%d 输出日志时间点的日期或时间
%d{yyyy-MM-dd HH:mm:ss} 指定日期或时间格式
%l 输出日志时间发生的位置,即输出日志讯息的语句处于他所在的类别的第几行
%m 输出代码中指定的讯息
%n 输出一个换行符号
6、log4j.appender.appenderName1.Threshold = ERROR
指定某个appender的级别。结果取决于该级别和根级别的交集,即以级别更高的那个设置为准。
通常根级别设置较低,而指定appender的级别较高,两者配合使用。
补充:很多老程序员相比于.properties这种配置方式,更喜欢使用log4j.xml这种方式,log4j.xml功能更多,书写也更规范,有兴趣的可以问度娘。这两种基本都可以满足需求,至于选择哪一个自己个儿看着办吧,两个一起用我觉得就没必要了。