문제

웹 서비스를 통해 사진을 다른 웹 사이트에 업로드하는 작은 응용 프로그램이 있습니다. 내 현재 문제는 Axis가 STDOUT를 통해 전체 XML 메시지 (그림의 이진 데이터 포함)를 기록하고 있다는 것입니다. 비활성화하는 방법을 알아낼 수없는 것 같습니다.

JBOSS (JBOSS-LOG4J.XML)에 대한 LOG4J 설정에는 일반 STDOUT 정보 로깅에 대한 Appender가 포함되어 있으며 다른 범주 설정으로 축을 비활성화하려고했습니다.

<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>

STDOUT 에이 설정 사용 :

<category name="STDOUT">
  <priority value="DEBUG"/>
  <appender-ref ref="STDLOG"/>
</category>

결과를 변경하지 않고이 카테고리 설정을 시도했습니다.

<category name="log4j.logger.org.apache.axis" additivity="false">
  <priority value="ERROR"/>
</category>

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

일부 샘플 로그 출력은 다음과 같습니다.

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  

업데이트Axis-1.4.jar를 확인했고라는 파일이 있습니다. SimplElog.Properties:

# Logging detail level,
# Must be one of ("trace", "debug", "info", "warn", "error", or "fatal").
org.apache.commons.logging.simplelog.defaultlog=info

이것을 JAR 내에서 또는 Jboss-log4j.xml의 범주로 오류로 설정하는 것은 전혀 도움이되지 않았습니다.

내가 축 로깅을 끄거나 적어도 오류 레벨로 설정할 수있는 방법을 알고 있습니까?

건배
솔직한

도움이 되었습니까?

해결책 2

좋아, 더 나은 솔루션을 찾으려고 시도한 후, 유일한 방법은 이전 레거시 코드를 확인하고 모든 시스템을 바꾸는 것이 었습니다. 아웃 호출은 실제 로깅 문으로 호출 한 다음 나머지 stdout 메시지를 다른 로그로 필터링하는 것입니다. 파일.

주된 이유 중 하나는 Jboss 자체 인 것 같습니다. 이 토론 Axis2 메일 링리스트에서 왜 다음과 같은 이유를 설명합니다. 그러나 당신은 당신이 Jboss를 사용하고 있다고 언급하지 않았습니다! 부모 로그 4 구성을 사용하도록 강요합니다. 이 경우 Axis2 로깅을 무시하고 다음을 참조하십시오.

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

그곳에서 카테고리를 제한해야합니다. 예를 들어, 당신은 다음과 같습니다.

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

당신은 그것을 그대로두고 서버에서 로그를 얻을 수 있습니다.

성공하지 않고 카테고리를 설정하려고 시도했습니다. 나는 이것이 축과 축 2의 차이 때문이라고 가정합니다. 따라서 남은 유일한 해결책은 좋은 코딩 방식으로 가고 자신의 코드에서 stdout을 사용하지 않는 것이 었습니다. ;-)

다른 팁

이것은 하루에 약간 늦을 수 있지만 문제는 로깅 자체가 축 (System.out 및 Commons Logging을 통해)으로 수행되는 것 같습니다. 로그 핸들러 핸들러 체인에 존재합니다. 그것이 경과 시간이 기록되는 방식입니다.

이 처리기를 비활성화 할 수 있습니다 축 구성 파일(S)-서버 또는 클라이언트로 축을 사용하고 있는지 여부에 따라 Server-config.wsdd 및/또는 client-config.wsdd.

콘솔에서 메시지를 보는 이유는 아마도 loghandler.writetoconsole 속성이 True로 설정 되었기 때문일 것입니다. loghandler.writeToconsole을 false로 설정하면 loghandler.filename 속성에 의해 정의 된 파일에 쓰기를해야합니다. 기본적으로 파일 이름은 axis.log입니다.

먼저, 로그4J 구성이 실제로 읽는 것인지 확인하고 싶을 것입니다. axis-ant.jar)는 자신의 log4J.properties를 묶는 것에 대해 유죄였습니다. Log4J가 귀하와 다른 구성 파일을 읽고 있으며, 구성을 무의미하게 조정하려는 노력을 기울일 수 있습니다!

시스템 속성을 활성화 할 수 있습니다 -Dlog4j.debug Log4J를 인쇄하여 어떤 구성 파일을 읽을 수 있는지 표준으로 표시하십시오. 필요한 경우 사용할 수 있습니다 -Dlog4j.configuration=<file> 자신의 파일을 가리키기 위해.

또한, 나는 이것이 당신의 문제를 일으키고 있다고 생각하지 않지만, 왜 당신은 왜 부가력을 거짓으로 설정하고 있습니까?

문제는 Axis가 Log4J를 사용하여 해당 메시지를 기록하지 않으므로 해당 클래스에서 Log4J 로깅 레벨을 변경하려고 시도하는 것은 관련이 없다는 것입니다. Axis는 System.out.println을 사용하고 있습니다.

내가 생각할 수있는 유일한 것은 (부작용을 감안할 때 실제로 좋지 않음) Stdout 로그를 완전히 끄는 것입니다. 아마도 우선 순위를 OFF로 설정하는 것이 가능합니다.

유일한 솔루션은 축을 수정하고 코드를 XML을 System.out로 펌핑하지 않고 대신 로깅 메커니즘을 사용하여 코드를 패치하는 것입니다. 그러면 제어 할 수 있습니다.

log4j.properties 파일 또는 log4j.xml이 읽는 것을 아는 것이 매우 중요합니다. 그리고 Matt가 지적했듯이, 이것은 왜 당신의 조정 노력이 작동하지 않는지 아는 데 중요합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top