2010-12-23 3 views
5

Cargo Maven 플러그인을 사용하여 WAR를 원격 서버에 배포하고 있는데 문제가 있습니다. 아마 그 문제에 대한 두 번째 질문을 만들지 만,이 것은 Maven 플러그인의 log4j 설정을 무시하는 것입니다. Cargo는 JBoss의 클라이언트 라이브러리를 사용하여 JBoss 서버에 물건을 배송합니다 (JBoss 서버는 log4j를 사용합니다). 화물은 내가 아는 매핑 레이어 을 설정하지 않습니다.Maven Plugin의 log4j 설정을 덮어 쓰려면 어떻게해야합니까?

기본적으로 로그 메시지는 Maven 플러그인의 종속 라이브러리에서 발생합니다. 나는 -Dlog4j.debug 설정을 시도하고이 정보를 가지고 : 다음

log4j: Trying to find [log4j.xml] using ClassRealm[plugin>org.codehaus.cargo:cargo-maven2-plugin:1.0.5, parent: ClassRealm[maven.api, parent: null]] class loader. 
log4j: Trying to find [log4j.xml] using ClassLoader.getSystemResource(). 
log4j: Trying to find [log4j.properties] using context classloader ClassRealm[plugin>org.codehaus.cargo:cargo-maven2-plugin:1.0.5, parent: ClassRealm[maven.api, parent: null]]. 
log4j: Using URL [jar:file:/C:/Users/username/.m2/repository/org/jboss/jbossts/jbossjts/4.13.1.Final/jbossjts-4.13.1.Final.jar!/log4j.properties] for automatic log4j configuration. 
log4j: Reading configuration from URL jar:file:/C:/Users/username/.m2/repository/org/jboss/jbossts/jbossjts/4.13.1.Final/jbossjts-4.13.1.Final.jar!/log4j.properties 
log4j: Could not find root logger information. Is this OK? 
log4j: Parsing for [com.arjuna] with value=[INFO, default, stdout]. 
log4j: Level token is [INFO]. 
log4j: Category com.arjuna set to INFO 
log4j: Parsing appender named "default". 
log4j: Parsing layout options for "default". 
log4j: Setting property [conversionPattern] to [%d [%t] %-5p %c - %m%n]. 
log4j: End of parsing for "default". 
log4j: Setting property [maxBackupIndex] to [2]. 
log4j: Setting property [file] to [transaction.log]. 
log4j: Setting property [maxFileSize] to [500KB]. 
log4j: setFile called: transaction.log, true 
log4j: setFile ended 
log4j: Parsed "default" options. 
log4j: Parsing appender named "stdout". 
log4j: Parsing layout options for "stdout". 
log4j: Setting property [conversionPattern] to [%d [%t] %-5p %c - %m%n]. 
log4j: End of parsing for "stdout". 
log4j: Setting property [threshold] to [WARN]. 
log4j: Parsed "stdout" options. 
log4j: Handling log4j.additivity.com.arjuna=[null] 
log4j: Finished configuring. 
log4j:WARN No appenders could be found for logger (org.jnp.interfaces.TimedSocketFactory). 
log4j:WARN Please initialize the log4j system properly. 

을 나는 시도 설정 -Dlog4j.configuration = mylog4j.properties 그러나이있어 :

log4j: Trying to find [mylog4j.properties] using context classloader ClassRealm[plugin>org.codehaus.cargo:cargo-maven2-plugin:1.0.5, parent: ClassRealm[maven.api, parent: null]]. 
log4j: Trying to find [mylog4j.properties] using ClassRealm[plugin>org.codehaus.cargo:cargo-maven2-plugin:1.0.5, parent: ClassRealm[maven.api, parent: null]] class loader. 
log4j: Trying to find [mylog4j.properties] using ClassLoader.getSystemResource(). 
log4j: Could not find resource: [mylog4j.properties]. 
log4j:WARN No appenders could be found for logger (org.jnp.interfaces.TimedSocketFactory). 
log4j:WARN Please initialize the log4j system properly. 

을 log4j 설정 파일은 Maven 플러그인의 클래스 경로에 있어야하지만, 임의의 파일을 포함시키는 방법을 모르겠습니다. 의존성 만. 내 문제를 해결하기 위해 JBoss 라이브러리에서 디버그 정보를 얻을 수 있도록이 정보를 설정하고 싶습니다.

+0

문제의 확장 스택 추적은 사실 예외가 생성되는 위치를 식별하는 데 도움이되었습니다. (그리고 나는 그것을 해결하려고 천천히 노력하고 있습니다.) 그래도 어떻게 해야할지를 아는 데 유용한 정보가 될 것 같습니다 이 경우에도 가능합니다. –

답변

8

log4j.configuration으로 설정하면 리소스 문자열이 설정됩니다. log4j default initialization process 및 예를 살펴보십시오. 이

-Dlog4j.configuration=mylog4j.properties 

같은 구문을 사용하는 경우

이 파일은 클래스 경로에 예상된다. 그러나 다음과 같은 구문을 사용할 수도 있습니다.

-Dlog4j.configuration=file:/<path>/mylog4j.properties 

정규화 된 파일 위치를 지정하십시오.

+0

감사합니다. maven 명령 줄에 아무 것도 추가하지 않고이 작업을 수행 할 수있는 방법이 있습니까? 즉 파일 위치가 플러그인의 클래스 경로에 있도록 구성합니까? –

+0

@nat k log4j는 기본적으로 classpath를보고 구성 파일 ([Default Initialization] (https://logging.apache.org/log4j/1.2/manual.html#defaultInit))을 찾습니다. 'src/main/resources'에있는 설정 파일. 다른 파일과 충돌하는 경우'log4j.configuration' 속성을 설정해야합니다. pom.xml에서이 작업을 수행 할 수 있어야하므로 명령 줄이 필요하지 않습니다. – FrVaBe

+0

고마워요. 나도 그렇게 생각했는데 플러그인 (maven-docbkx-plugin)을 사용하면 log4j 설정 파일이 src/main/resources에서 선택되지 않는다. 필자는 maven-set-properties 플러그인을 사용하여 log4j.configuration 변수를 설정했습니다. –