我有一个简单的基于SOAP的应用程序写入单独的日志。日志是在jboss / bin / log下创建的,但它是空的。我将Web服务作为jar文件部署到JBoss AS 6.1。 log4j.properties位于'src'文件夹的根目录下。
package abc.WebServiceSamples;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.ejb.Stateless;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
@Stateless
@WebService(serviceName = "GreetingService")
public class greeting {
static final Logger logger = Logger.getLogger(greeting.class);
public greeting() {
super();
}
@WebMethod
public String welcome(String s1) {
String str = "Welcome, " + s1;
Properties props = new Properties();
//load from classpath
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("log4j.properties");
// Now pass these properties to PropertyConfigurator
try {
props.load(inputStream);
} catch (IOException e) {
e.printStackTrace(System.out);
}
PropertyConfigurator.configure(props);
logger.debug("Sample debug message");
logger.info("Sample info message");
logger.warn("Sample warn message");
logger.error("Sample error message");
logger.fatal("Sample fatal message");
return str;
}
}
log4j.properties:
log4j.rootLogger=INFO
# AdminFileAppender - used to log messages in the admin.log file.
log4j.appender.AdminFileAppender=org.apache.log4j.FileAppender
log4j.appender.AdminFileAppender.File=log/admin.log
log4j.appender.AdminFileAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.AdminFileAppender.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
# ReportFileAppender - used to log messages in the report.log file.
log4j.appender.ReportFileAppender=org.apache.log4j.FileAppender
log4j.appender.ReportFileAppender.File=log/report.log
log4j.appender.ReportFileAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.ReportFileAppender.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
#log4j.logger.com.vaannila.admin=,AdminFileAppender
log4j.logger.abc.WebServiceSamples.greeting=,ReportFileAppender
java run命令:
/ opt / java / bin / java -server -Xms128m -Xmx512m -XX:MaxPermSize = 256m -Dorg.jboss.resolver.warning = true -Dsun.rmi.dgc.client.gcInterval = 3600000 -Dsun.rmi。 dgc.server.gcInterval = 3600000 -Djava.net.preferIPv4Stack = true -Dprogram.name = run.sh -Dlogging.configuration = file:/opt/jboss/bin/logging.properties -Dlog4j.debug = true -Djava.library .path = / opt / jboss / bin / native / lib64 -Djava.endorsed.dirs = / opt / jboss / lib / endorsed -classpath /opt/jboss/bin/run.jar:/opt/java/lib/tools。 jar org.jboss.Main -c all -b 0.0.0.0
tailing server / all / server.log:
2012-08-06 15:21:33,688 INFO [org.jboss.web.tomcat.service.deployers.TomcatDeployment](HDScanner)deploy,ctxPath = / ejb_ws_greeting
2012-08-06 15:21:50,929 INFO [STDOUT](Finalizer)log4j:完成名为[OtherAppender]的追加器。
2012-08-06 15:21:50,930 INFO [STDOUT](Finalizer)log4j:完成名为[ReportFileAppender]的appender。
2012-08-06 15:22:37,156 INFO [org.apache.cxf.transport.servlet.AbstractCXFServlet](http-0.0.0.0-8080-1)Servlet运输工厂已经注册
2012-08-06 15:22:37,164 INFO [STDOUT](http-0.0.0.0-8080-1)log4j:用值= [INFO]解析[root]。
2012-08-06 15:22:37,165 INFO [STDOUT](http-0.0.0.0-8080-1)log4j:等级标记为[INFO]。
2012-08-06 15:22:37,169 INFO [STDOUT](http-0.0.0.0-8080-1)log4j:类别根设置为null
2012-08-06 15:22:37,169 INFO [STDOUT](http-0.0.0.0-8080-1)log4j:使用值= [WARN,ReportFileAppender]解析[abc.WebServiceSamples.greeting]。
2012-08-06 15:22:37,169 INFO [STDOUT](http-0.0.0.0-8080-1)log4j:等级标记为[WARN]。
2012-08-06 15:22:37,169 INFO [STDOUT](http-0.0.0.0-8080-1)log4j:类别abc.WebServiceSamples.greeting设为null
2012-08-06 15:22:37,169 INFO [STDOUT](http-0.0.0.0-8080-1)log4j:解析名为“ReportFileAppender”的appender。
2012-08-06 15:22:37,170 INFO [STDOUT](http-0.0.0.0-8080-1)log4j:解析“ReportFileAppender”的布局选项。
2012-08-06 15:22:37,170 INFO [STDOUT](http-0.0.0.0-8080-1)log4j:将属性[conversionPattern]设置为[%-4r [%t]%-5p%c%x - %米%N]。
2012-08-06 15:22:37,171 INFO [STDOUT](http-0.0.0.0-8080-1)log4j:解析“ReportFileAppender”的结束。
2012-08-06 15:22:37,171 INFO [STDOUT](http-0.0.0.0-8080-1)log4j:将属性[file]设置为[log / report1.log]。
2012-08-06 15:22:37,171 INFO [STDOUT](http-0.0.0.0-8080-1)log4j:setFile调用:log / report1.log,true
2012-08-06 15:22:37,171 INFO [STDOUT](http-0.0.0.0-8080-1)log4j:setFile已结束
2012-08-06 15:22:37,171 INFO [STDOUT](http-0.0.0.0-8080-1)log4j:解析“ReportFileAppender”选项。
2012-08-06 15:22:37,171 INFO [STDOUT](http-0.0.0.0-8080-1)log4j:处理log4j.additivity.abc.WebServiceSamples.greeting = [null]
2012-08-06 15:22:37,172 INFO [STDOUT](http-0.0.0.0-8080-1)log4j:完成配置。
2012-08-06 15:22:37,172 INFO [STDOUT](http-0.0.0.0-8080-1)欢迎,您好酷
2012-08-06 15:22:37,172 WARN [abc.WebServiceSamples.greeting](http-0.0.0.0-8080-1)示例警告信息
2012-08-06 15:22:37,172 ERROR [abc.WebServiceSamples.greeting](http-0.0.0.0-8080-1)示例错误信息
2012-08-06 15:22:37,172致命[abc.WebServiceSamples.greeting](http-0.0.0.0-8080-1)致命消息示例
谢谢。
答案 0 :(得分:0)
可以在这里找到类似问题的解决方案:
https://stackoverflow.com/a/26924040
基本上,它会从部署单元中排除模块org.apache.log4j,因为log4j与应用程序服务器的默认日志记录实现之间可能存在冲突。