繁体   English   中英

如何在不使用绝对路径的情况下使用log4j.properties为Java Web Service创建日志文件

[英]How to use log4j.properties to create a log file for a Java Web Service without using an absolute path

我正在尝试为JAX-WS创建日志文件。 我需要能够构建WAR并将其放在Tomcat服务器上,而无需其他任何操作。 此WAR将在许多不同的服务器上使用,这些服务器上到Tomcat的路径可能并不总是相同的。 因此,日志文件的位置必须相对,并且可能在部署WAR时生成。 现在,即使使用绝对路径,我的日志也不起作用。 我已经搜索了Stack Overflow,无法弄清楚我的问题是什么。 以下是我的代码,感谢您的帮助。

主文件

package lms.foodocs;

....

import org.apache.log4j.Logger;

public class FooDocs{

      static Logger log = Logger.getLogger(FooDocs.class.getName());
      .....
      .....
      .....

      public String getPDF(String data){
         log.info("testing");
         return PDF(data);
      }



      private String PDF(String sourceData){
         try{
             ........
             ........

             log.info("test message);             }

         }catch(Exception e){
           log.error("Doc", e);
           return "crap";
          }

log4j.properties

log4j.rootLogger=info, stdout, R


log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout;
log4j.appender.stdout.ConversionPattern =%5 [%t] (%F:%L) - %m%n

log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=C:/workspace/foo.log
log4j.appender.R.MaxFileSize=1MB
log4j.appender.R,MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d [%t] %-5p -%m%n

我的路

WebContent/

  META-INF/

  WEB-INF/
    classes/
        lms/
          foodocs/
            FooDocs.class
            log4j.properties
     FooDocsService/
     lib/
      server.config.wsdd
      web.xml
      sun-jaws.xml

   wsdl/
      FooDocs.wsdl
  1. 将log4j.properties文件中的C:/workspace/foo.log更改为${catalina.base}/logs/foo.log 这会将您的日志文件写入Tomcat安装的logs目录;
  2. 移动您的log4j.properties文件,使其位于WEB-INF / classes /目录的正下方。

另外,将记录器声明为:

    private static final Logger log = Logger.getLogger(FooDocs.class);

由于tomcat总是定义catalina home,因此您可以使用:

log4j.appender.R.File=${catalina.home}/logs/foo.log

您还可以使用其他一些系统属性或创建自己的自定义属性,并像这样传递它

export JAVA_OPTS="-Dfoo.logging.root=/foo/bar/"

像这样使用

log4j.appender.R.File=${foo.logging.root}/logs/foo.log

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM