一个简单的例子 ------------------------------- log4j.rootLogger=DEBUG,R
log4j.appender.R=org.apache.log4j.RollingFileAppender log4j.appender.R.File=./log/msgEditor/editor.log log4j.appender.R.MaxFileSize=10MB log4j.appender.R.MaxBackupIndex=10 log4j.appender.R.layout=org.apache.log4j.PatternLayout log4j.appender.R.layout.ConversionPattern=[%5p] %d [%X{userName}] [%X{remoteIp}] %m%n ------------------------------- (1)log4j.rootLogger是内置的固定名称,针对所有java包的LOG。
(2)DEBUG,是指LOG级别,DEBUG > INFO > WARN > ERROR,写DEBUG的话,4种级别信息都会显示,写INFO的话,那么就后3种,写WARN,就后两种,写ERROR,
就只有ERROR啦。
(3)R 是LOG处理器的名字,可以有多个处理器,名字随便起。比如DEBUG,A,B,Gaga,wawa..等等,也就是说,一个LOG信息进来,可以把它写到多个地方。
(4)log4j.appender.R就是对R这个处理器的详细设置了。 org.apache.log4j.RollingFileAppender,即滚动文件追加,把LOG写到文件, File指定文件路径, MaxFileSize 文件最大尺寸 MaxBackupIndex 滚动次数10,也就是file.log.1,file.log.2...这个意思,最多10次。 layout是LOG内容的格式,org.apache.log4j.PatternLayout是说格式自定义吧。 ConversionPattern就是自定义格式的模板
(5)要是有多个处理器的话,就下面对应来多段log4j.appender.名字.*就行了。
(6)log4j.rootLogger中指定的LOG级别是最顶层的级别,实际上后面每个处理器还可以指定一个级别。假设rootLogger是INFO,那么处理器即使指定为DEBUG也没用,因为只有INFO、WARN和ERROR信息进来了,DEBUG信息被拦在外面了。
(7)想把DEBUG和INFO信息分开保存,貌似是不行的。DEBUG级别时,总是把INFO信息也记录进来了。INFO信息倒是可以单独放到一个文件里,当然里面还是包含WARN和ERROR信息的。 --------------------------------- 还可以针对某个Java类包,单独来一个处理器,单独输出。如: log4j.logger.com.vaannila.admin=WARN,AdminFileAppender log4j.logger.com.vaannila.report=DEBUG,ReportFileAppender
log4j.appender.AdminFileAppender=org.apache.log4j.FileAppender log4j.appender.AdminFileAppender.File=admin.log log4j.appender.AdminFileAppender.layout=org.apache.log4j.PatternLayout log4j.appender.AdminFileAppender.layout.ConversionPattern= %-4r [%t] %-5p %c %x - %m%n log4j.appender.ReportFileAppender=org.apache.log4j.FileAppender log4j.appender.ReportFileAppender.File=report.log log4j.appender.ReportFileAppender.layout=org.apache.log4j.PatternLayout log4j.appender.ReportFileAppender.layout.ConversionPattern= %-4r [%t] %-5p %c %x - %m%n
就是针对com.vaannila.admin和com.vaannila.report两个类包,单独弄了处理器。 这样就不用看一堆杂七杂八的LOG了。 ======================================================================= 代码中大概这么用: static Logger logger = Logger.getLogger(xxxxx.class);
if (log.isDebugEnabled()) { log.debug("111"); } if (log.isInfoEnabled()) { log.info("222"); } if (log.isWarnEnabled()) { log.warn("333"); } if (log.isErrorEnabled()) { log.error("444"); } ================================================================================= 具体参数见下文:
项目中log4j.properties使用详解 转自:http://aokunsang.iteye.com/blog/636469
1.输出级别: ERROR、WARN、INFO、DEBUG、FATAL、OFF ERROR:严重错误,主要是程序的错误 WARN:一般警告,比如:seesion丢失 INFO:一般要显示的信息,比如:登录 DEBUG:程序调试信息 log4j建议使用以上四种带注释的,即ERROR、WARN、INFO、DEBUG。 --------------------------------- 2.log4j的具体使用实例 log4j.rootCategory=INFO, CONSOLE, LOGFILE
#输出到控制台 log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.Threshold=DEBUG log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=- %m%n
#每天生成一个日志文件 log4j.appender.LOGFILE=org.apache.log4j.DailyRollingFileAppender log4j.appender.LOGFILE.DatePattern='.'yyyy-MM-dd log4j.appender.LOGFILE.Append=true log4j.appender.LOGFILE.Threshold=WARN log4j.appender.LOGFILE.File=logs/log log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
#在日志中显示sql语句 log4j.logger.java.sql.Connection=DEBUG log4j.logger.java.sql.Statement=debug log4j.logger.java.sql.PreparedStatement=debug log4j.logger.java.sql.ResultSet=info log4j.logger.javax.sql=info log4j.logger.com.ibatis=debug log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug --------------------------------- 首先:必须先在程序中导入两个jar包:commons-logging.jar,logging-log4j-1.2.9.jar.
$1 、定义输出目的地 log4j.rootLogger或者log4j.rootCategory=[level],A1,B2,C3... 两者区别:在早期log4j版本中,org.apache.Category实现了记录器的功能,所谓人往高处走水往低处流,log4j也做的要越来越好,它使用logger扩展了
Category类,因此目前这两个可以通用的。(个人建议使用log4j.rootLogger)
$2 、输出目的地的类型 log4j.appender.A1=以下类 1、org.apache.log4j.ConsoleAppender 输出到控制台 2、org.apache.log4j.DailyRollingFileAppender 每天生成一个日志文件 3、org.apache.log4j.RollingFileAppender 文件达到制定的尺寸会产生一个新的文件 4、org.apache.log4j.FileAppender 输出到文件 5、org.apache.log4j.WriterAppender 把日志文件以流的形式发送到任意指定的地方\
(imp)每种布局格式的常用属性详解 $2-1(org.apache.log4j.ConsoleAppender)、 log4j.appender.A1=org.apache.log4j.ConsoleAppender (1)log4j.appender.A1.Threshold=日志输出级别(如:ERROR,WARN等) 【指定消息的最低输出层次】 (2)log4j.appender.A1.ImmediateFlush=true|false 默认为true 【表所有的信息都会立即示输出】 (3)log4j.appender.A1.Target=System.err|System.out 默认为System.out 【指定输出到控制台】
$2-2(org.apache.log4j.DailyRollingFileAppender)、 log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender (1)log4j.appender.A1.Threshold=日志输出级别(如:ERROR,WARN等) 【指定消息的最低输出层次】 (2)log4j.appender.A1.ImmediateFlush=true|false 默认为true 【表所有的信息都会立即示输出】 (3)log4j.appender.A1.File=a.log (a.log为文件名) 【把日志信息输出到a.log文件,默认是从web服务器的根路径开始】 (4)DatePattern='.'yyyy-ww:每周滚动一次文件,即每周产生一个新的文件。也可以指定按月、周、天、时和分, 对应的格式如下: 1)'.'yyyy-MM: 每月 2)'.'yyyy-ww: 每周 3)'.'yyyy-MM-dd: 每天 4)'.'yyyy-MM-dd-a: 每天a次 5)'.'yyyy-MM-dd-HH: 每小时 6)'.'yyyy-MM-dd-HH-mm: 每分钟
$2-3(org.apache.log4j.RollingFileAppender) log4j.appender.A1=org.apache.log4j.RollingFileAppender (1)log4j.appender.A1.Threshold=日志输出级别(如:ERROR,WARN等) 【指定消息的最低输出层次】 (2)log4j.appender.A1.ImmediateFlush=true|false 默认为true 【表所有的信息都会立即示输出】 (3)log4j.appender.A1.File=a.log (a.log为文件名) 【把日志信息输出到a.log文件,默认是从web服务器的根路径开始】 (4)log4j.appender.A1.Append=true|false 默认为true 【true将消息增加到指定文件中,false指将消息覆盖指定的文件内容】 (5)log4j.appender.A1.MaxFileSize=100KB 后缀可以为MB,GB。日志文件达到该大小时,将会自动滚动,将原来内容移动到a.log.1文件、 (6)log4j.appender.A1.MaxBackupIndex=1|2|3.... 指可以产生的滚动文件的最大数
$2-4(org.apache.log4j.FileAppender) log4j.appender.A1=org.apache.log4j.FileAppender (1)log4j.appender.A1.Threshold=日志输出级别(如:ERROR,WARN等) 【指定消息的最低输出层次】 (2)log4j.appender.A1.ImmediateFlush=true|false 默认为true 【表所有的信息都会立即示输出】 (3)log4j.appender.A1.File=a.log (a.log为文件名) 【把日志信息输出到a.log文件,默认是从web服务器的根路径开始;貌似还可以在启动web服务的时
候指定文件根目录,这个没有试用过 】
$3 、配置日志输出的格式 log4j.appender.A1.layout=以下类 1、org.apache.log4j.HTMLLayout 以html表格的形式布局 2、org.apache.log4j.TTCCLayout 包含日志产生的时间、线程、类别等信息 3、org.apache.log4j.PatternLayout 可以灵活指定布局格式(这个经常与log4j.appender.A1.layout.ConversionPattern=%-4r %d{yyyy MM dd
HH:mm:ss} %m%n) 4、org.apache.log4j.SimpleLayout 包含日志信息的级别和信息字符串 使用灵活布局格式(PatternLayout),需要指定打印格式ConsersionPattern,具体参数如下: %p 日志的优先级,即:DEBUG,WARN,INFO,ERROR,FAULT %m 代码中指定的信息,产生的日志具体信息 %n 换行 %r 自应用启动到输出该log信息时耗费的毫秒数 %c 日志信息所属的类的全名 %d 输出日志的时间,默认为ISO8601 如:2010-04-07 15:19:21,640,也可以在后面指定格式,如:%d{yyyy-MM-dd HH:mm:ss,SSS} %L 输出代码中的行号 %F 产生日志的代码名称 %t 产生日志信息的线程名 %l 日志事件的位置,相当于%c.%m(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数,举例:Testlog4.main(TestLog4.java:10)。 Ⅰ、 也可以在%和参数之间添加数字等,控制其最大、最小宽度以及对齐方式、 %-20c:输出日志信息所在类的全名,该全名的最小宽度为20,“-”表示左对齐,默认为右对齐。类的全名小于20,就右补空格。 %.20c:前面加个点,表示该类的全名的最大宽度为20,此时为右对齐,如果长度小于20,也不会左补空格;如果长度超过20,则截取左边超长的部分。写成(%
-.20c效果一样),但是你不能写成%.-20c,控制台会原样输出,并且提示这样写有问题,但不影响程序运行、 %20.50c:表示最小宽度为20,最大宽度为50,如果长度超过50,截取左边超出部分.(测试发现与%-20.50c效果一样,很是郁闷....) Ⅱ、 输出指定包或者指定类中的日志信息 log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug 输出com.ibatis.common.jdbc.SimpleDataSource类中的日志信息 log4j.logger.javax.sql=info 输出javax.sql包中的日志信息 log4j.com.test=warn 你也可以指定你的项目中的包 log4j.logger.org.springframework=DEBUG 输出spring的包里面的日志信息 Ⅲ、 在项目的类中使用,需要导入commons-logging.jar 然后private final static Log log = LogFactory.getLog(getClass()); 参数为当前类的class 在使用日志记录时,可以分等级的去记录,如:log.info("这是基本信息");log.error("这个错误信息");等等
|