WEBシステム起動時にログ4 jのプロファイルをロードする

2681 ワード

WEBシステム全体では、統一的な使用ログ管理のために、システム起動時にLog 4 jのプロファイルをロードする必要があります.そうすれば、後でlog 4 jを使用するフォーマットが一致し、追跡と問題解決が容易になることを保証できます.
では、システム起動時にlog 4 jのプロファイルをロードするにはどうすればいいのでしょうか.簡単に紹介します.
 
1、web.xmlファイルにリスナーを追加
<!--   log4j      -->
  <listener>
  	<listener-class>hb.init.log4j.Log4jInit</listener-class>
  </listener>

 
2、「リスニングクラス」は「サーブレットContextListener」インタフェースを継承する
package hb.init.log4j;

import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

public class Log4jInit implements ServletContextListener{
	
	Logger log = Logger.getLogger(Log4jInit.class);
	
	public void contextDestroyed(ServletContextEvent sce) {
		log.info("Log4jInit contextDestroyed!");
	}

	public void contextInitialized(ServletContextEvent sce) {
		
		//  servletContext     
		ServletContext sc = sce.getServletContext();
		//                     
		System.out.println(sc.getRealPath("/"));
		String path = sc.getRealPath("/config/log4j.properties");
		
		//                 
		init(path,sc);
		log.info("log4j");
	}
	
	
	/**
	 * 
	 * @param path        
	 * @param sc ServletContext  
	 */
	public void init(String path,ServletContext sc){
		FileInputStream istream = null;
		try{
			Properties props = new Properties();
			//      
			istream = new FileInputStream(path);
			props.remove("log4j.appender.file.File");
			System.out.println(sc.getRealPath("/log/hb.log"));
			//  log     
			props.put("log4j.appender.file.File", sc.getRealPath("/log/hb.log"));
			//     ,  Log4j         
			props.load(istream);
			PropertyConfigurator.configure(props);
		} catch (Exception ex){
			try {
				throw new Exception(ex);
			} catch (Exception e) {
				e.printStackTrace();
			}
		} finally{
			try {
				istream.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	
	
}

 
log 4 jのプロファイルをロードする目的は、ログファイルを「エンジニアリングと対向するパスの場所に置く」ためであり、プロジェクトを異なるオペレーティングシステムに移植しても表示は正常である