之前使用lo4j的日志管理,但是一直没有总结和记录下来,现在有时间就记录一下
log4j使用主要分为3个部分:1环境configurator的配置,2项目中logger的日志信息记录3.属性文件的具体配置
1和2使用实例代表,其使用非常简单,在spring,struts2,mybatis,hibernate具有使用,你在使用框架的时候其实已经在记录这些日志,操作非常简单
1:configurator为basicconfigutor,PropertyConfigurator ,DOMConfigurator三中,具体为下代码(均使用绝对路径,项目中不要这么做)
package log;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.xml.DOMConfigurator;
public class Logtest {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
Logtest testlog=new Logtest();
testlog.getDoucment();
}
//最简单的处理方式,默认加载log4j的属性文件log4j.properties,什么操作都不需要
public void getbasic(){
BasicConfigurator.configure();
Logger log =Logger.getLogger(this.getClass());
log.debug("1dfekf");
log.warn("1warn");
}
//其实在项目中使用propertiesconfigurator主要配置不同log4j.properties属性文件,其动态修改不会很多,就算修改,也是直接改,在configure中定期读取就可以了
//而其中使用的properties并不是log4j的,是jsk自带处理属性文件,如struts.properties,功能是很强大,但是用的少
public void getproperty() throws IOException{
File file=new File("D:/workplace/new_workplace/test/src/log4j.properties");//仅供测试所用,此路径不能在项目中使用
FileInputStream input=new FileInputStream(file);
Properties pro=new Properties();
pro.load(input);//通过properties属性来进行动态修改properties文件
input.close();
System.out.println(pro.getProperty("log4j.appender.R"));//获取日志属性
System.out.println(pro.containsKey("log4j.appender.R"));//判断属性是否存在
pro.setProperty("log4j.appender.R.File", "D:/workplace/new_workplace/test/src/logtest.txt");//动态修改属性文件
//如需要本地保存,则将结合输出流
FileOutputStream output=new FileOutputStream(file);
pro.store(output, "本地保存");
output.close();
PropertyConfigurator.configure(pro);//日志环境配置确认
Logger log =Logger.getLogger(this.getClass());//日志记录
log.debug("2dfekf");
log.warn("2warn");
log.error("eor");
}
//这个应该是用来解析log的xml形式的属性配置,说实话,我没碰到到项目中使用这种方式
public void getDoucment(){
DOMConfigurator.configure("D:/workplace/new_workplace/test/src/log4js.xml");
Logger log =Logger.getLogger(this.getClass());
log.debug("3dfekf");
log.warn("3warn");
log.info("3info");
log.error("3error");
log.fatal("3fatol");
}
public static String getpath(){
return Logtest.class.getResource("/").toString();
}
}
log4j.properties
#\u672C\u5730\u4FDD\u5B58
#Tue Apr 29 19:19:23 CST 2014
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss} [%c]-[%p] %m%n
log4j.appender.R.File=D\:/workplace/new_workplace/test/src/logt.txt
log4j.rootLogger=DEBUG, A1 ,R
log4j.appender.R.MaxFileSize=250KB log4j.appender.R.MaxBackupIndex\=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
<!-- ========================== 自定义输出格式说明================================ -->
<!-- %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL -->
<!-- %r 输出自应用启动到输出该log信息耗费的毫秒数 -->
<!-- %c 输出所属的类目,通常就是所在类的全名 -->
<!-- %t 输出产生该日志事件的线程名 -->
<!-- %n 输出一个回车换行符,Windows平台为“/r/n”,Unix平台为“/n” -->
<!-- %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921 -->
<!-- %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10) -->
<!-- ========================================================================== -->
<!-- ========================== 输出方式说明================================ -->
<!-- Log4j提供的appender有以下几种: -->
<!-- org.apache.log4j.ConsoleAppender(控制台), -->
<!-- org.apache.log4j.FileAppender(文件), -->
<!-- org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件), -->
<!-- org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件), -->
<!-- org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方) -->
<!-- ========================================================================== -->
<!-- 输出到日志文件 -->
<appender name="log4jTestDebug" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="D:\\workplace\\new_workplace\\test\\src\\logxml.txt"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="5KB"/>
<param name="MaxBackupIndex" value="2"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%c %d{ISO8601}-- %p -- %m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="DEBUG"/>
<param name="LevelMax" value="DEBUG"/>
</filter>
</appender>
<appender name="log4jTestLogInfo" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="D:\\workplace\\new_workplace\\test\\src\\logxml.txt"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="5KB"/>
<param name="MaxBackupIndex" value="2"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%c %d{ISO8601}-- %p -- %m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="INFO"/>
<param name="LevelMax" value="INFO"/>
</filter>
</appender>
<!--通过<category></category>的定义可以将各个包中的类日志输出到不同的日志文件中-->
<category name="com.gzy">
<priority value="debug" />
<appender-ref ref="log4jTestLogInfo" />
<appender-ref ref="log4jTestDebug" />
</category>
<root>
<priority value="debug"/>
</root>
</log4j:configuration>
3具体属性文件配置,我没有把握好,这里就引入一个其他人写好的,非常不错,具体网址忘了
log4j.rootLogger=DEBUG,A1,A3,E,W,I,D
#??????????
log4j.logger.com.log4j.test=DEBUG,PKG
log4j.appender.A1=org.apache.log4j.lf5.LF5Appender
log4j.appender.A1.MaxNumberOfRecords=700
log4j.appender.A4=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A4.file=${catalina.home}/webapps/game/log/d.log
log4j.appender.A4.DatePattern='.'yyyyMMdd
log4j.appender.A4.layout=org.apache.log4j.PatternLayout
log4j.appender.A4.layout.ConversionPattern=/n/n[%-5p] %d{yyyy-MM-dd HH\:mm\:ss,SSS} method\:%l%n%m%n
log4j.appender.A3=org.apache.log4j.RollingFileAppender
log4j.appender.A3.file=${catalina.home}/webapps/game/log/r.log
log4j.appender.A3.MaxFileSize=1024KB
log4j.appender.A3.MaxBackupIndex=999
log4j.appender.A3.layout=org.apache.log4j.PatternLayout
log4j.appender.A3.layout.ConversionPattern=/n/n[%-5p] %d{yyyy-MM-dd HH\:mm\:ss,SSS} method\:%l%n%m%n
log4j.appender.E=org.apache.log4j.RollingFileAppender
log4j.appender.E.file=${catalina.home}/webapps/game/log/error.log
log4j.appender.E.MaxFileSize=1024KB
log4j.appender.E.MaxBackupIndex=999
#??ERROR???????
log4j.appender.E.Threshold=ERROR
log4j.appender.E.layout=org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern=/n/n[%-5p] %d{yyyy-MM-dd HH\:mm\:ss,SSS} method\:%l%n%m%n
log4j.appender.W=org.apache.log4j.RollingFileAppender
log4j.appender.W.file=${catalina.home}/webapps/game/log/warn.log
log4j.appender.W.MaxFileSize=1024KB
log4j.appender.W.MaxBackupIndex=999
#??WARN???????
log4j.appender.W.Threshold=WARN
log4j.appender.W.layout=org.apache.log4j.PatternLayout
log4j.appender.W.layout.ConversionPattern=/n/n[%-5p] %d{yyyy-MM-dd HH\:mm\:ss,SSS} method\:%l%n%m%n
log4j.appender.I=org.apache.log4j.RollingFileAppender
log4j.appender.I.file=${catalina.home}/webapps/game/log/info.log
log4j.appender.I.MaxFileSize=1024KB
log4j.appender.I.MaxBackupIndex=999
#??INFO???????
log4j.appender.I.Threshold=INFO
log4j.appender.I.layout=org.apache.log4j.PatternLayout
log4j.appender.I.layout.ConversionPattern=/n/n[%-5p] %d{yyyy-MM-dd HH\:mm\:ss,SSS} method\:%l%n%m%n
log4j.appender.D=org.apache.log4j.RollingFileAppender
log4j.appender.D.file=${catalina.home}/webapps/game/log/debug.log
log4j.appender.D.MaxFileSize=1024KB
log4j.appender.D.MaxBackupIndex=999
#??DEBUG???????
log4j.appender.D.Threshold=DEBUG
log4j.appender.D.layout=org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern=/n/n[%-5p] %d{yyyy-MM-dd HH\:mm\:ss,SSS} method\:%l%n%m%n
#????Appender
log4j.appender.PKG=org.apache.log4j.RollingFileAppender
log4j.appender.PKG.file=${catalina.home}/webapps/game/log/pkg.log
log4j.appender.PKG.MaxFileSize=1024KB
log4j.appender.PKG.MaxBackupIndex=999
log4j.appender.PKG.layout=org.apache.log4j.PatternLayout
log4j.appender.PKG.layout.ConversionPattern=/n/n[%-5p] %d{yyyy-MM-dd HH\:mm\:ss,SSS} method\:%l%n%m%n