log4j在桌面程序和Web程序中的配置
注意:本文說到的log4j版本爲1.2.15,使用的配置文件是屬性文件(properties),如果這些與您的環境不符則請快速離開,以免耽誤你的寶貴時間。
一.log4j在桌面程序中的配置
這個相對簡單了,它的步驟就這樣兩步:
1)將log4j-1.2.15.jar引入到工程的lib目錄中.
2)確保配置文件log4j.properties在程序的代碼目錄(如src目錄,cfg目錄)中,它編譯後應該位於類路徑classes中.
log4j.properties示例(可以拷貝使用):
- log4j.rootLogger=debug, stdout, R
- log4j.appender.stdout=org.apache.log4j.ConsoleAppender
- log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
- # Pattern to output the caller's file name and line number.
- log4j.appender.stdout.layout.ConversionPattern=%d %5p [%t] (%F:%L) - %m%n
- log4j.appender.R=org.apache.log4j.RollingFileAppender
- log4j.appender.R.File=輸出log文件.log
- log4j.appender.R.MaxFileSize=1000KB
- # Keep one backup file
- log4j.appender.R.MaxBackupIndex=1
- log4j.appender.R.layout=org.apache.log4j.PatternLayout
- log4j.appender.R.layout.ConversionPattern=%d %5p [%t] (%F:%L) - %m%n
要對這個文件進行修改的話,基本上改兩個地方就行了。
一個是輸出文件名稱,一個是輸出等級設置。
1) 輸出文件名稱:
log4j.appender.R.File=輸出log文件.log
2) 輸出等級:
log4j.rootLogger=debug, stdout, R
Debug說明只要是logger.debug以上的都記錄
配置到這裏,就結束了。下面請看如何在程序中使用log4j。
二.log4j的使用
1) 首先,那個類要用到log4j記錄日誌,就應該爲類添加一個靜態的成員變量loogger,示例如下:
- public class Main{
- private static Logger logger = Logger.getLogger(Main.class);
- public static void main(String[] args){
- logger.info("成員管理程序啓動");
- new MemberMngCtrl();
- }
- }
2) 其次,你就可以使用logger.debug ,logger.info, logger.warn, logger.error, logger.fatal等函數(記錄等級依次提高)來記錄日誌內容了,確實是很簡單方便的。
三.log4j在Web工程中的配置
與桌面程序一樣的是,properties文件也需要能被編譯到classes(WEB-INF/classes/)中,建議將屬性文件放在特定的目錄下並設置爲源碼目錄,另外放在WEB-INF/src下也不錯。
這一步比前面稍多的是需要配置一個初始化log4j的initServlet,就是在一開始就啓動的Servlet,代碼如下:
- public class Log4jInit extends HttpServlet {
- private static final long serialVersionUID = -4499302208753939187L;
- static Logger logger = Logger.getLogger(Log4jInit.class);
- public void init(ServletConfig config) throws ServletException {
- String prefix = config.getServletContext().getRealPath("/");
- String file = config.getInitParameter("log4j");
- String filePath = prefix + file;
- Properties props = new Properties();
- try {
- FileInputStream istream = new FileInputStream(filePath);
- props.load(istream);
- istream.close();
- String logFile = prefix + props.getProperty("log4j.appender.R.File");//設置路徑
- props.setProperty("log4j.appender.R.File",logFile);
- // 裝入log4j配置信息
- PropertyConfigurator.configure(props);
- } catch (IOException e) {
- System.out.println("Could not read configuration file [" + filePath + "].");
- System.out.println("Ignoring configuration file [" + filePath + "].");
- return;
- }
- }
- }
然後,在Web.xml中配置一下,讓它在一開始啓動就可以了。
- <!-- InitServlet -->
- <servlet>
- <servlet-name>log4j-init</servlet-name>
- <servlet-class>
- com.sitinspring.action.Log4jInit
- </servlet-class>
- <init-param>
- <param-name>log4j</param-name>
- <param-value>WEB-INF/classes/log4j.properties</param-value>
- </init-param>
- <load-on-startup>1</load-on-startup>
- </servlet>
引用地址:
http://www.blogjava.net/sitinspring/archive/2008/08/08/220883.html