2014-12-11 5 views
0

Я пытаюсь создать файл журнала для JAX-WS. Мне нужно построить WAR и поместить его на Tomcat Server без каких-либо других функций. Эта WAR будет использоваться на разных серверах, где пути к Tomcat могут быть не всегда одинаковыми. Поэтому местоположение файла журнала должно быть относительным и, возможно, генерироваться при развертывании WAR. Прямо сейчас мой журнал, даже с абсолютным путем, не работает. Я искал Stack Overflow и не могу понять, в чем моя проблема. Ниже мой код и спасибо за помощь.Как использовать log4j.properties для создания файла журнала для веб-службы Java без использования абсолютного пути

основной файл

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 

ответ

0
  1. Сменить C:/workspace/foo.log на ${catalina.base}/logs/foo.log в вашем файле log4j.properties. Это запишет ваш файл журнала в каталог logs вашей установки Tomcat;
  2. Переместите файл log4j.properties так, чтобы он находился непосредственно под каталогом WEB-INF/classes /.

Кроме того, это более обычный объявить ваш регистратор как:

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

Поскольку кот всегда определяют Catalina: вы можете использовать:

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