WEBシステム起動時にログ4 jのプロファイルをロードする
2681 ワード
WEBシステム全体では、統一的な使用ログ管理のために、システム起動時にLog 4 jのプロファイルをロードする必要があります.そうすれば、後でlog 4 jを使用するフォーマットが一致し、追跡と問題解決が容易になることを保証できます.
では、システム起動時にlog 4 jのプロファイルをロードするにはどうすればいいのでしょうか.簡単に紹介します.
1、web.xmlファイルにリスナーを追加
2、「リスニングクラス」は「サーブレットContextListener」インタフェースを継承する
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のプロファイルをロードする目的は、ログファイルを「エンジニアリングと対向するパスの場所に置く」ためであり、プロジェクトを異なるオペレーティングシステムに移植しても表示は正常である