如何使用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>




原创粉丝点击