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, textLog
log4j.logger.org.springframework=INFO
log4j.logger.org.springframework.transaction=INFO
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} [%t] %p %c %x - %m%n
log4j.appender.textLog = org.apache.log4j.DailyRollingFileAppender
#log4j.appender.textLog.MaxFileSize=5MB
#log4j.appender.textLog.MaxBackupIndex=10
log4j.appender.textLog.layout=org.apache.log4j.PatternLayout
log4j.appender.textLog.layout.ConversionPattern=%d{ISO8601} [%t] %p %c %x - %m%n
log4j.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 here
Log4jWebConfigurer.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);
點右鍵新建一個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