[英]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
C:/workspace/foo.log
更改为${catalina.base}/logs/foo.log
。 这会将您的日志文件写入Tomcat安装的logs
目录; 另外,将记录器声明为:
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.