现在的位置: 首页 > 综合 > 正文

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

2013年10月17日 ⁄ 综合 ⁄ 共 3382字 ⁄ 字号 评论关闭

 http://www.cnblogs.com/kapok/archive/2005/11/25/284768.html


学前背景:
1. Weblogic部署war并不像tomcat一样会把war解包,所以硬盘物理文件夹结构并不存在.

说明:Weblogic部署war包会解包,如我的包WebTest.war包。部署之后会在

C:/bea/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_user/WebTest目录生成文件

 这里user_projects为自己创建的域名,在WebTest目录下有我的jsp如index.jsp,可以修改这个jsp的内容刷新浏览器可以看到修改后的结果

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();

抱歉!评论已关闭.