0

我有一个简单的基于 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运行命令:

/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 全部 -b 0.0.0.0

尾随服务器/所有/server.log:

2012-08-06 15:21:33,688 信息 [org.jboss.web.tomcat.service.deployers.TomcatDeployment] (HDScanner) 部署,ctxPath=/ejb_ws_greeting
2012-08-06 15:21:50,929 信息 [STDOUT] (终结器)log4j:终结名为 [OtherAppender] 的附加程序。
2012-08-06 15:21:50,930 信息 [STDOUT](终结器)log4j:终结名为 [ReportFileAppender] 的附加程序。
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:解析 [root],值为 [INFO]。
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:类别根设置为空
2012-08-06 15:22:37,169 INFO [STDOUT] (http-0.0 .0.0-8080-1) log4j:解析 [abc.WebServiceSamples.greeting],值为 [WARN,ReportFileAppender]。
2012-08-06 15:22:37,169 信息 [STDOUT] (http-0.0.0.0-8080-1) log4j:级别令牌为 [WARN]。
2012-08-06 15:22:37,169 信息 [STDOUT] (http-0.0.0.0-8080-1) log4j:类别 abc.WebServiceSamples.greeting 设置为空
2012-08-06 15:22:37,169 信息 [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:解析“ReportFileAppender”的布局选项。
2012-08-06 15:22:37,170 信息 [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 信息 [标准输出] (http-0.0.0.0-8080-1) log4j: 调用 setFile: log/report1.log, true
2012-08-06 15:22:37,171 信息 [标准输出] (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 信息 [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 错误 [abc.WebServiceSamples.greeting] (http-0.0.0.0-8080-1) 示例错误消息
2012-08-06 15: 22:37,172 FATAL [abc.WebServiceSamples.greeting] (http-0.0.0.0-8080-1) 示例致命消息

谢谢你。

4

1 回答 1

0

可以在这里找到类似问题的解决方案:

https://stackoverflow.com/a/26924040

基本上,它从您的部署单元中排除了模块 org.apache.log4j,因为 log4j 和应用程序服务器的默认日志实现之间可能存在冲突。

于 2017-01-21T13:41:56.467 回答