如何使用log4j
来源:互联网 发布:tensorflow和spark 编辑:程序博客网 时间:2024/06/03 04:03
第一步:
导入jar包,可以在http://logging.apache.org/上下载;
第二步:在工程的src目录下新建一个log4j.properties的文件,
内容如下:
#org.apache.log4j.rootLogger=LEVEL,appenderName1,appenderName2(appenderName为自定义),……#LEVEL有5种等级:FATAL,ERROR,WARN,INFO,DEBUGlog4j.rootLogger=error,consoleAppender,fileAppenderlog4j.logger.System.err=error, fileAppenderlog4j.logger.System.out=error, fileAppender#Appender 为日志输出目的地,Log4j提供的appender有以下几种:#org.apache.log4j.ConsoleAppender(控制台),#ConsoleAppender选项:#Threshold:指定日志消息的输出最低层次;#ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。#Target=System.err:默认情况下是:System.out,指定输出控制台#org.apache.log4j.FileAppender(文件),#FileAppender选项:#Threshold,ImmediateFlush#File=mylog.txt:指定消息输出到mylog.txt文件。#Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容#org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),#org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),#Threshold, ImmediateFlush, File, Append#MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。#MaxBackupIndex=2:指定可以产生的滚动文件的最大数量。#org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)#log4j.appender.consoleAppender=org.apache.log4j.ConsoleAppenderlog4j.appender.consoleAppender.Threshold=infolog4j.appender.fileAppender=org.apache.log4j.RollingFileAppenderlog4j.appender.fileAppender.Threshold=infolog4j.appender.fileAppender.layout=org.apache.log4j.PatternLayoutlog4j.appender.fileAppender.layout.ConversionPattern=%d %p [%l] - <%m> %t %nlog4j.appender.fileAppender.File=c:/run_log/mylog.loglog4j.appender.fileAppender.MaxFileSize=2000kblog4j.appender.fileAppender.MaxBackupIndex=10000#Layout:日志输出格式,Log4j提供的layout有以下几种:#org.apache.log4j.HTMLLayout(以HTML表格形式布局),#org.apache.log4j.PatternLayout(可以灵活地指定布局模式),#org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),#org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)log4j.appender.consoleAppender.layout=org.apache.log4j.PatternLayoutlog4j.appender.consoleAppender.layout.ConversionPattern=%d %p [%l] - <%m> %n %t
打印参数说明: Log4J采用类似C语言中的printf函数的打印格式格式化日志信息:
%m 输出代码中指定的消息(message)
%p 输出优先级(priority),即DEBUG,INFO,WARN,ERROR,FATAL
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类(class)的全名
%t 输出产生该日志事件的线程名(thread)
%n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”
%d 输出日志时间点的日期(date)或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss , SSS},输出类似:2002年10月18日 22 : 10 : 28 , 921
%l 输出日志事件的发生位置(location),包括类目名、发生的线程,以及在代码中的行数。举例:test.main(test.java: 10 )
第三步:
在类中定义: private static final Logger logger = Logger.getLogger(TheClassName.class);
接下来就可以在需要的地方写日志了:
logger.info("记得一定要写对定位问题有用的日志哦,亲!") ;
此外,我们经常需要将抛出异常的堆栈信息打印到日志中,e.printStackTrace() ;是做不到的,那么怎么办呢?
1.开发一个帮助类:
2.在打印日志的地方将e.printStackTrace() ;改写成logger.error(Log4jUtil.getExceptionStackTrace(e)) ;即可。
如果持久层使用的是mybatis框架,如何结合log4j输出mybatis执行的sql语句:
### 将ibatis log4j运行级别调到DEBUG可以在控制台打印出ibatis运行的sql语句,方便调试:### 设置Logger输出级别和输出目的地 ###log4j.rootLogger=debug,stdout,logfile ### 把日志信息输出到控制台 ###log4j.appender.stdout=org.apache.log4j.ConsoleAppender#log4j.appender.stdout.Target=System.errlog4j.appender.stdout.layout=org.apache.log4j.SimpleLayout ### 把日志信息输出到文件:jbit.log ###log4j.appender.logfile=org.apache.log4j.FileAppenderlog4j.appender.logfile.File=log4mybatis.loglog4j.appender.logfile.layout=org.apache.log4j.PatternLayoutlog4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %F %p %m%n ###显示SQL语句部分log4j.logger.com.ibatis=DEBUGlog4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUGlog4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUGlog4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUGlog4j.logger.java.sql.Connection=DEBUGlog4j.logger.java.sql.Statement=DEBUGlog4j.logger.java.sql.PreparedStatement=DEBUG
附 使用log4j.xml打印日志:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"><log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false"> <!-- Append messages to the console --> <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender"> <param name="Threshold" value="INFO"/> <param name="Target" value="System.out"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/> </layout> <filter class="org.apache.log4j.varia.LevelRangeFilter"> <param name="LevelMin" value="INFO"/> <param name="LevelMax" value="INFO"/> </filter> </appender> <!-- Preserve messages in a local file --> <appender name="INFO" class="org.apache.log4j.RollingFileAppender"> <param name="File" value="./logs/tmc/dynamicField/DYNAMIC_FIELD_INFO.log"/> <param name="Append" value="true"/> <param name="MaxFileSize" value="20MB"/> <param name="Threshold" value="INFO"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/> </layout> <filter class="org.apache.log4j.varia.LevelRangeFilter"> <param name="LevelMin" value="INFO"/> <param name="LevelMax" value="INFO"/> </filter> </appender> <!-- Append messages to the error log file --> <appender name="ERROR_LOG" class="org.apache.log4j.RollingFileAppender"> <param name="Threshold" value="ERROR"/> <param name="File" value="./logs/tmc/dynamicField/DYNAMIC_FIELD_ERROR.log"/> <param name="Append" value="true"/> <param name="MaxFileSize" value="20MB"/> <param name="MaxBackupIndex" value="5"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/> </layout> <filter class="org.apache.log4j.varia.LevelRangeFilter"> <param name="LevelMin" value="ERROR"/> <param name="LevelMax" value="ERROR"/> </filter> </appender> <!-- Append messages to the debug log file --> <appender name="DEBUG_LOG" class="org.apache.log4j.RollingFileAppender"> <param name="Threshold" value="DEBUG"/> <param name="File" value="./logs/tmc/dynamicField/DYNAMIC_FIELD_DEBUG.log"/> <param name="Append" value="true"/> <param name="MaxFileSize" value="20MB"/> <param name="MaxBackupIndex" value="5"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/> </layout> <filter class="org.apache.log4j.varia.LevelRangeFilter"> <param name="LevelMin" value="DEBUG"/> <param name="LevelMax" value="DEBUG"/> </filter> </appender> <root> <level value="DEBUG"/> <appender-ref ref="CONSOLE"/> <appender-ref ref="INFO"/> <appender-ref ref="DEBUG_LOG"/> <appender-ref ref="ERROR_LOG"/> </root></log4j:configuration>
- 如何使用Log4j?
- 如何使用Log4j?
- 如何使用Log4j?
- 如何使用Log4j?
- 如何使用Log4j? (转载)
- 如何使用Log4j?
- 如何使用Log4j
- 如何使用Log4j
- 如何使用Log4j?
- 如何使用Log4j?
- 如何使用Log4j?(
- 如何使用Log4j?
- 如何使用Log4j?
- 怎样?如何 使用Log4J?
- 如何使用Log4j?
- 如何正确地使用log4j
- 如何使用Log4j?
- 如何使用Log4j?
- 动态规划算法与分治算法思想
- linux下vi命令大全
- C++中回车换行(\n\r)和换行(\r)的区别
- ibatis框架中sql_map配置文件的配置项解释
- day of year must be three character
- 如何使用log4j
- HTTP协议详解
- useBean的用法(45_1)
- 字符设备
- useBean的用法(45_2)
- linux格式化输入输出函数操作
- ANSI C标准文件IO操作
- linux文件缓冲区
- C++编程规范 编程风格 学习 (3) -- 避免使用“魔数”