我正在尝试为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
答案 0 :(得分:0)
C:/workspace/foo.log
更改为${catalina.base}/logs/foo.log
。这会将您的日志文件写入Tomcat安装的logs
目录; 此外,将您的记录器声明为:
更为常规 private static final Logger log = Logger.getLogger(FooDocs.class);
答案 1 :(得分:0)
由于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