java logger學習

log在平日寫代碼中還是很常用的,多線程時,每次log的輸出都是串行加鎖的。

簡單介紹下log的輸出和log4j.properties的寫法。

我在練習的時候,遇到了一個問題。private static Logger sqlog = LoggerFactory.getLogger(com.baidu.log.logger.CustomerLog.class);

或者是被根日誌處理,在根日誌的appender上進行輸出。

LoggerFactory.getLogger("biz")用來生成一個名字叫biz的對象。

在log4j.properties中,就可以用log4j.logger.biz=INFO,WS 來指定日誌的級別和輸出位置。

</pre><p></p><pre name="code" class="java">package com.baidu.log.logger;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


public class CustomerLog {
	private static Logger sqlog = LoggerFactory.getLogger("biz");
	private int a =5;
	public static void main(String[] args) {
		sqlog.warn("aa");
	}
}


log4j.properties

log4j.rootLogger=INFO
log4j.appender.WS=org.apache.log4j.RollingFileAppender
log4j.appender.WS.File=../wei/jin.log
log4j.appender.WS.layout=org.apache.log4j.PatternLayout
log4j.appender.WS.Threshold=INFO
log4j.appender.WS.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t]-[%l]-[%p] %m%n
log4j.appender.WS.encoding=GBK

log4j.appender.logSay=org.apache.log4j.ConsoleAppender
log4j.appender.logSay.layout=org.apache.log4j.PatternLayout
log4j.appender.logSay.Threshold=INFO
log4j.appender.logSay.layout.ConversionPattern=%d [%t] %-5p %-17c{2} %3x - %m%n
log4j.appender.console.ImmediateFlush=true

log4j.logger.biz=INFO,WS
log4j.additivity.com.baidu.log.logger=false
log4j.appender.CONSOLE=org.apache.log4j.RollingFileAppender
log4j.appender.CONSOLE.File=../wei/wei.log
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.Threshold=INFO
log4j.appender.CONSOLE.layout.ConversionPattern=%d [%t] %-5p %-17c{2} %3x - %m%n
log4j.appender.console.ImmediateFlush=true
其中,log4j.rootLogger=INFO,WS,logSay 是設置根日誌,INFO是日誌級別,WS和logSay是日誌輸出方式。可以設置爲文件輸出還是控制檯輸出。log4j.logger.com.baidu.log.logger是設置子日誌,就是將com.baidu.log.logger包下的日誌設置級別和輸出方式。輸出方法:可以指定多個輸出位置。都會輸出。與Customer.java類中的private static Logger sqlog = LoggerFactory.getLogger("com.baidu.log.logger.CustomerLog.class")對應,可以找到這個sqlog。log4j.additivity.com.baidu.log.logger=false就是子日誌不會在根日誌的輸出位置裏輸出。

運行後發現,wei.log中有如下內容:2016-02-25 14:48:34,116 [main] WARN  CustomerLog.class     - aa


同時,也可以設置不同的包的日誌生成的級別和輸出位置,做法就是用private static Logger sqlog = LoggerFactory.getLogger(CustomerLog.class);

然後在property文件中配置CustomerLog所在的包的級別和輸出位置。

這是在com.baidu.log.logger.test包中。

package com.baidu.log.logger.test;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


public class CustomerLog {
	private static Logger sqlog = LoggerFactory.getLogger(CustomerLog.class);
	private int a =5;
	public static void main(String[] args) {
		sqlog.warn("aa");
		try {
			
		} catch(Exception e) {
			
		}	
	}
}

下面的在com.baidu.log.logger包中

package com.baidu.log.logger;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


public class CustomerLog {
	private static Logger sqlog = LoggerFactory.getLogger(com.baidu.log.logger.CustomerLog.class);
	private int a =5;
	public static void main(String[] args) {
		sqlog.warn("aa");
		try {
			
		} catch(Exception e) {
			
		}	
	}
}
可以再property對這兩個不同的包進行配置。

#log4j.rootLogger=INFO,WS,logSay
log4j.rootLogger=INFO
log4j.appender.WS=org.apache.log4j.RollingFileAppender
log4j.appender.WS.File=../wei/jin.log
log4j.appender.WS.layout=org.apache.log4j.PatternLayout
log4j.appender.WS.Threshold=INFO
log4j.appender.WS.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t]-[%l]-[%p] %m%n
log4j.appender.WS.encoding=GBK

log4j.appender.logSay=org.apache.log4j.ConsoleAppender
log4j.appender.logSay.layout=org.apache.log4j.PatternLayout
log4j.appender.logSay.Threshold=INFO
log4j.appender.logSay.layout.ConversionPattern=%d [%t] %-5p %-17c{2} %3x - %m%n
log4j.appender.console.ImmediateFlush=true

log4j.appender.fengwei=org.apache.log4j.RollingFileAppender
log4j.appender.fengwei.File=../wei/fengwei.log
log4j.appender.fengwei.layout=org.apache.log4j.PatternLayout
log4j.appender.fengwei.Threshold=INFO
log4j.appender.fengwei.layout.ConversionPattern=%d [%t] %-5p %-17c{2} %3x - %m%n
log4j.appender.console.ImmediateFlush=true

log4j.logger.com.baidu.log.logger.test=INFO,WS
log4j.additivity.com.baidu.log.logger.test=false


log4j.logger.com.baidu.log.logger=INFO,fengwei
log4j.additivity.com.baidu.log.logger=false
執行後發現兩個文件都有輸出。




發佈了14 篇原創文章 · 獲贊 4 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章