Java 禁用jboss中的Axis log4j日志记录

Java 禁用jboss中的Axis log4j日志记录,java,jboss,log4j,axis,Java,Jboss,Log4j,Axis,我有一个小应用程序,通过webservice将图片上传到另一个网站。 我目前的问题是,Axis通过标准输出记录整个xml消息(包括图片的二进制数据!),我似乎不知道如何禁用它 我的jboss的log4j设置(jboss-log4j.xml)包括一个用于正常标准输出信息记录的附件,我尝试使用不同的类别设置禁用axis: <appender name="STDLOG" class="org.jboss.logging.appender.RollingFileAppender"> &l

我有一个小应用程序,通过webservice将图片上传到另一个网站。 我目前的问题是,Axis通过标准输出记录整个xml消息(包括图片的二进制数据!),我似乎不知道如何禁用它

我的jboss的log4j设置(jboss-log4j.xml)包括一个用于正常标准输出信息记录的附件,我尝试使用不同的类别设置禁用axis:

<appender name="STDLOG" class="org.jboss.logging.appender.RollingFileAppender">
  <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
  <param name="File" value="${jboss.server.log.dir}/myapplication.log"/>
  <param name="Append" value="true"/>
    <param name="MaxFileSize" value="5MB"/>
    <param name="MaxBackupIndex" value="10"/>

    <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%d %-5p [%c] (%t) %m%n"/>
  </layout>
</appender>
在jar中将其设置为error,或者将其设置为jboss-log4j.xml中的一个类别,都没有任何帮助

有人知道如何关闭轴日志记录或至少将其设置为错误级别吗

干杯

Frank

首先,您需要检查您的log4j配置是否确实是正在读取的配置-我记得在过去,至少有一个axis jar(我认为可能是
axis ant.jar
)因捆绑自己的log4j.properties而有罪。可能是log4j读取的配置文件与您的不同,使得您调整配置的努力毫无意义

您可以启用系统属性
-Dlog4j.debug
以使log4j打印到正在读取的配置文件的标准输出。如有必要,您可以使用
-Dlog4j.configuration=
指向您自己的文件


另外,我不认为这会导致您的问题,但为什么要将additivity设置为false?

首先,您需要检查您的log4j配置是否确实是正在读取的配置-我记得在过去,至少有一个axis jar(我想它可能是
axis ant.jar
)因为捆绑自己的log4j.properties而有罪。可能是log4j读取的配置文件与您的不同,使得您调整配置的努力毫无意义

您可以启用系统属性
-Dlog4j.debug
以使log4j打印到正在读取的配置文件的标准输出。如有必要,您可以使用
-Dlog4j.configuration=
指向您自己的文件


另外,我不认为这会导致您的问题,但为什么要将additivity设置为false?

问题在于Axis没有使用Log4j记录该消息,因此尝试更改该类上的Log4j记录级别是不相关的。Axis正在使用System.out.println

我能想到的唯一一件事(考虑到副作用,这真的不太好)就是完全关闭标准输出。可能将优先级设置为off就可以了


唯一真正的解决方案是修复Axis并修补代码,使其不向System.out输出xml,而是使用日志机制,这样您就可以控制它了。

问题是Axis没有使用Log4j来记录该消息,因此尝试更改该类上的Log4j日志记录级别是不相关的。Axis正在使用System.out.println

我能想到的唯一一件事(考虑到副作用,这真的不太好)就是完全关闭标准输出。可能将优先级设置为off就可以了


唯一真正的解决方案是修复Axis并修补代码,使其不向System.out输出xml,而是使用日志机制,这样您就可以控制它了。

好的,在尝试找到更好的解决方案后,唯一真正的方法是检查旧的遗留代码,并将所有System.out调用转换为真正的日志语句(无论如何都要好得多),然后简单地将剩余的STDOUT消息过滤到不同的日志文件中

主要原因之一似乎是Jboss本身。从axis2邮件列表中,可以解释为什么: 啊,但是你没有提到你正在使用jboss!它几乎是一种力量 您需要使用它们的父log4配置。忽略此对话框中的axis2日志记录 案例,请参阅:

~/jboss/server/default/conf/log4j.xml

在这里,您必须限制类别。例如,您有:

<category name="org.apache">
  <priority value="INFO"/>
</category>

您可以保持原样,只需将日志从server.log中取出即可。


我尝试设置类别,但没有成功。我认为这是因为axis和axis2之间的差异。所以剩下的唯一解决方案就是采用良好的编码方式,在自己的代码中不要使用STDOUT;-)

好的,在尝试找到更好的解决方案之后,唯一真正的方法是检查旧的遗留代码,并将所有System.out调用转换为真正的日志语句(无论如何要好得多),然后简单地将剩余的STDOUT消息过滤到不同的日志文件中

主要原因之一似乎是Jboss本身。从axis2邮件列表中,可以解释为什么: 啊,但是你没有提到你正在使用jboss!它几乎是一种力量 您需要使用它们的父log4配置。忽略此对话框中的axis2日志记录 案例,请参阅:

~/jboss/server/default/conf/log4j.xml

在这里,您必须限制类别。例如,您有:

<category name="org.apache">
  <priority value="INFO"/>
</category>

您可以保持原样,只需将日志从server.log中取出即可。


我尝试设置类别,但没有成功。我认为这是因为axis和axis2之间的差异。所以剩下的唯一解决方案就是采用良好的编码方式,在自己的代码中不要使用STDOUT;-)

这可能有点晚了,但问题似乎不是日志本身是在Axis中完成的(通过System.out和Commons日志),而是在处理程序链中存在。这就是记录所用时间的方式

您可以从(s)-server-config.wsdd和/或client-config.wsdd禁用此处理程序,具体取决于您是将Axis用作服务器还是客户端


在控制台中看到消息的原因可能是LogHandler.writeToConsole属性设置为true。如果将LogHandler.writeToConsole设置为false,则它应写入LogHandler.fileName属性定义的文件中。默认情况下,文件名为axis.log。

这可能有点晚了,但问题似乎不是日志本身是在axis中完成的(通过System.out和Commons日志),而是
2009-08-07 10:29:43,911 INFO  [STDOUT] (http-127.0.0.1-8080-1) =======================================================
= Elapsed: 2190 milliseconds
= In message: <?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <soapenv:Body>
  <addVehicleImage xmlns="urn:VMgrWebService">
   <id xmlns="">APP-T4QKR3U</id>
   <idType xmlns="">chiffre</idType>
   <data xmlns="">9j4AAQSkZJRgABAQAAAQABAAD2wBDAAUDBAQEAwUEBAQFB
     QUGBww0TDMnrXAfKlLjnNJZcciiAOtqk9NG99qhZJKuyYq5k3G
     8P2bVSOpT7rVddRP2Z/yqidRuMMKaO2CXRQNWP2jfOo4S4Bo3W
   removed rest of image data...
     IBwcHBw8LCwkMEQ8SEhEPERETFhwXExQaFRERGCEYGe1UqaZJJy0jSHPGQ
2009-08-07 10:29:43,927 INFO  [STDOUT] (http-127.0.0.1-8080-1) Upload result: true for image mypicture.JPG  
# Logging detail level,
# Must be one of ("trace", "debug", "info", "warn", "error", or "fatal").
org.apache.commons.logging.simplelog.defaultlog=info
<category name="org.apache">
  <priority value="INFO"/>
</category>