log4j日志使用

来源:互联网 发布:网络研修帖子 编辑:程序博客网 时间:2024/05/23 16:59

1,加载log4j日志

用到的包:

log4j-1.2.14.jar

commons-logging-1.1.1.jar

spring-mock.jar

spring.jar

stringtemplate.jar

找到log4j日志包,导入项目,编写log4j配置文件

log4j.rootLogger=INFO, stdout, textLoglog4j.logger.org.springframework=INFOlog4j.logger.org.springframework.transaction=INFOlog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} [%t] %p %c %x - %m%nlog4j.appender.textLog = org.apache.log4j.DailyRollingFileAppender #log4j.appender.textLog.MaxFileSize=5MB#log4j.appender.textLog.MaxBackupIndex=10log4j.appender.textLog.layout=org.apache.log4j.PatternLayoutlog4j.appender.textLog.layout.ConversionPattern=%d{ISO8601} [%t] %p %c %x - %m%nlog4j.appender.textLog.DatePattern = '.'yyyy-MM-dd'.log' log4j.appender.textLog.File=D\:/temp/Memcached_look_log
日志配置不会写请参考百度文库:http://baike.baidu.com/view/25347.htm

写好后,代码内加载配置

public class logTest {private static final Logger log = Logger.getLogger(logTest.class);public static void logsendTest(){//同时输出到控制台和一个文件的实例并实现了Logger的继承PropertyConfigurator.configure("E:\\javawork\\web_project\\SSHTest_1\\WebRoot\\WEB-INF\\config\\log\\log4j.properties");log.debug("Start of the main() in TestLog4j"); log.info("Just testing a log message with priority set to INFO"); log.warn("Just testing a log message with priority set to WARN"); log.error("Just testing a log message with priority set to ERROR"); log.fatal("Just testing a log message with priority set to FATAL"); log.log(Priority.WARN, "Testing a log message use a alternate form" );log.info("end");System.out.print(System.currentTimeMillis());}public static void main(String[] args) {logTest.logsendTest();}}

J2EE项目加载日志需要写个servlet启动时加载,代码录下

    <context-param><param-name>log4jConfigLocation</param-name><param-value>/WEB-INF/config/log/log4j.properties</param-value></context-param>     <servlet>       <servlet-name>log4jinit</servlet-name>       <servlet-class>logTest.LogServlet</servlet-class>      <load-on-startup>1</load-on-startup>  </servlet>

logTest.LogServlet需要用到spring包里的方法进行加载,代码录下

public void init() {// Put your code hereLog4jWebConfigurer.initLogging(this.getServletContext());log.info("***************服务器启动*****************");}

当然你也可以不写servlet直接调用spring日志处理进行加载,web.xml配置录下

 <servlet><servlet-name>log4jConfigListener</servlet-name><servlet-class>org.springframework.web.util.Log4jConfigServlet</servlet-class><load-on-startup>1</load-on-startup></servlet>
这样,你j2ee项目启动的时候,日志就已经加载了

2,日志格式的修改,自定义日志格式。lo4j除了标准定义的格式以为,还可以自定义格式输出

log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} [%t] %p %c %X{levelProject} %X{MouldProject} - %m%n
这里,%d:时间, %t线程,%p打印类型,%c类目,  %X{levelProject}自定义的levelProject,%x{MouldProject}自定义的MouldeProject类目,%m打印信息,%n换行符

MDC.put("levelProject", level);MDC.put("MouldProject", LoggingApi.getProjectbyClass(clazz));
3,日志存放目录自定义,与日志名称自定义

log4j.appender.textLog.File=${user.log4jdir}/${usr.log4jprofix}_log

java代码设置user.log4jdir与user.log4jprofix

System.setProperty(CommonConstant.LOG4J_CONFIG_FLAG, log4jLogDir); System.setProperty(CommonConstant.LOG4J_CONFIG_PROFIX, log4jlogfilePifx);


4,日志查看与解析,这里用apache的Chainsaw V2 工具进行解析,Chainsaw V2下载路径http://logging.apache.org/chainsaw/

点右键新建一个Receivers,Chainsaw V2支持在线socket解析,也支持本地文件查看,这里我用本地文件查看

新建一个LogFilePatternReceiver接收器,其中,
fileURL:file:///c:/test.log
logFormat:TIMESTAMP[THREAD] LEVEL CLASS PROP(levelProject) PROP(MouldProject) - MESSAGE(格式必须保持log4j打印格式一致,否则Chainsaw V2会查不到对应字段)
CLASS (FILE:LINE) - MESSAGE
name:test
点击OK按钮,然后就可以在Chainsaw中对日志进行过滤或排序了。


比如,可以设定:PROP.leveProject == ‘1′ && PROP.MouldProject == ‘Test’,并按照时间戳进行排序,
这样就可以看到级别是“1”,模块是“Test”的日志打印了


参考链接:http://hi.baidu.com/javaworld2006/item/e1ba90332dc0e5f7e6bb7af2

http://shansun123.iteye.com/blog/1016759



原创粉丝点击