Weblogic的War或者EAR应用与log4j的搭配

学前背景:
1. Weblogic部署war并不像tomcat一样会把war解包,所以硬盘物理文件夹结构并不存在.
2. log4j的配置文件有properties文件和xml格式两种.

解决办法,使用一个load-on-start=0的log4jinit servlet来完成log4j的初始化:

如果使用xml格式的log4j的配置文件,没有直接的办法实现初试话,我的解决办法:

 1  package  log;
 2 
 3  import  org.apache.log4j.LogManager;
 4  import  org.apache.log4j.xml.DOMConfigurator;
 5 
 6  import  java.io.InputStream;
 7 
 8  import  javax.xml.parsers.FactoryConfigurationError;
 9 
10 
11  /**
12   *
13   *
14   *  @author  
15    */
16  public   class  StreamedDOMConfigurator  extends  DOMConfigurator {
17 
18       // ~ Methods ================================================================
19 
20       public   static   void  configure(InputStream fis)
21                             throws  FactoryConfigurationError {
22 
23           try  {
24 
25               new  DOMConfigurator().doConfigure(fis,
26                                                LogManager.getLoggerRepository());
27          }  finally  {
28 
29               if  (fis  !=   null ) {
30 
31                   try  {
32 
33                      fis.close();
34                  }  catch  (java.io.IOException e) {
35 
36                      System.err.println( " Could not close [ "   +  fis  +   " ]. " );
37                  }
38              }
39          }
40      }
41  }
42 


然后:
 1  package  servlet;
 2 
 3  import  java.io.FileInputStream;
 4  import  java.io.FileNotFoundException;
 5 
 6  import  javax.servlet.http.HttpServlet;
 7  import  javax.xml.parsers.FactoryConfigurationError;
 8 
 9  import  Config;
10  import  log.StreamedDOMConfigurator;
11  import  util.StringUtil;
12 
13 
14  /**
15   *
16   *
17    */
18  public   class  Log4jInitServlet  extends  HttpServlet {
19 
20       // ~ Methods ================================================================
21 
22       public   void  init() {
23 
24          String log4jFileLoc  =  Config.getInstance()
25                                                  .getLog4jFileLoc();
26 
27           if  (StringUtil.isEmpty(log4jFileLoc)) {
28 
29              log4jFileLoc  =  getInitParameter( " log4j-init-file " );
30          }
31 
32           if  (log4jFileLoc  !=   null ) {
33 
34               try  {        
35                  StreamedDOMConfigurator.configure( new  FileInputStream(log4jFileLoc));
36              }  catch  (FileNotFoundException e) {
37 
38                   //  TODO Auto-generated catch block
39                  e.printStackTrace();
40              }  catch  (FactoryConfigurationError e) {
41 
42                   //  TODO Auto-generated catch block
43                  e.printStackTrace();
44              }
45 
46 
47          }
48      }
49  }
50 


如果使用properties格式的,那就简单了,网上就有解决办法:
 1  // Properties props = new Properties();
 2                   //             InputStream is = getServletContext()
 3                   //                                  .getResourceAsStream(log4jFileLoc);
 4                   // InputStream istream = null;
 5                   // try {
 6                   // istream = new FileInputStream(log4jFileLoc);
 7                   // istream = ClassLoader.getSystemResourceAsStream(log4jFileLoc);
 8                   //                 istream = new FileInputStream(log4jFileLoc);
 9                   // System.out.println(istream);
10                   // props.load(istream);
11                   // props.list(System.out);
12                   // istream.close();

转载于:https://www.cnblogs.com/kapok/archive/2005/11/25/284768.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值