출처 : http://opennaru.tistory.com/109
JBoss EAP6 에서 server.log에서 애플리케이션에서 출력하는 로그 메세지가 보이지 않습니다. 톰캣에서는 메세지가 출력되는데 JBoss EAP6에서만 나오지 않습니다.
1. 동작환경
본 내용은 다음과 같은 환경을 전제로 작성되었습니다.
2. 문제
애플리케이션이나 모듈에 포함되어 있는 Log4J의 설정이 반영되지 않아 server.log 에 로그가 보이지 않는다.
3. 원인
JBoss EAP6에서는 기본적으로 자체의 로그 모듈을 사용하게 됩니다. 이 경우 배포 대상 애플리케이션에 포함된 Log4J 설정이 동작하지 않습니다.
4. 해결책
이 문제를 해결하는 방법은 두 가지로 첫 번째는 JBoss 인스턴스 옵션으로 "org.jboss.as.logging.per-deployment=false"를 두는 방법이며, 두 번째는
"jboss-deployment-structure.xml" 를 이용하여 해당 로그 라이브러리를 Exclusion으로 선언하는 방법입니다.
4.1 org.jboss.as.logging.per-deployment=false 를 이용하는 방법
JBoss 인스턴스 시작 옵션에 시스템 프로퍼티로 시스템 프롭퍼티에 org.jboss.as.logging.per-deployment=false 를 설정합니다.
이 방법은 JBoss 에서 각 배포 대상에 대하여 JBoss 자체의 로거를 사용하지 않게 하는 것입니다.
-Dorg.jboss.as.logging.per-deployment=false
<server name="PMS" group="pms_server_group" auto-start="false">
<system-properties>
<property name="org.jboss.as.logging.per-deployment" value="false"/>
</system-properties>
</server>
4.2 jboss-deployment-structure.xml 에서 exclusion으로 선언하는 방법
- EAR의 경우 XX.ear/META-INF/jboss-deployment-structure.xml
- WAR의 경우 XX.war/WEB-INF/jboss-deployment-structure.xml
<jboss-deployment-structure>
<deployment>
<exclusions>
<module name="org.apache.log4j" />
<module name="org.apache.commons.logging" />
</exclusions>
</deployment>
</jboss-deployment-structure>
- logback 설정 시 샘플
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<deployment>
<exclusions>
<!--
스프링 프레임워크 사용 시 org.apache.commons.logging 은 필수로 해줘야 함
-->
<module name="org.apache.commons.logging" />
<module name="org.slf4j" />
<module name="org.slf4j.ext" />
<module name="org.slf4j.impl" />
<module name="org.slf4j.jcl-over-slf4j" />
</exclusions>
</deployment>
</jboss-deployment-structure>
5. References
- jboss 설정에 console 부분은 주석처리 한다.
<subsystem xmlns="urn:jboss:domain:logging:1.5"> <!-- <console-handler name="CONSOLE"> <level name="INFO"/> <formatter> <named-formatter name="COLOR-PATTERN"/> </formatter> </console-handler> --> <periodic-rotating-file-handler name="FILE" autoflush="true"> <formatter> <named-formatter name="PATTERN"/> </formatter> <file relative-to="jboss.server.log.dir" path="server/server.log"/> <suffix value=".yyyy-MM-dd"/> <append value="true"/> </periodic-rotating-file-handler> <logger category="com.arjuna"> <level name="WARN"/> </logger> <logger category="org.apache.tomcat.util.modeler"> <level name="WARN"/> </logger> <logger category="org.jboss.as.config"> <level name="DEBUG"/> </logger> <logger category="sun.rmi"> <level name="WARN"/> </logger> <logger category="jacorb"> <level name="WARN"/> </logger> <logger category="jacorb.config"> <level name="ERROR"/> </logger> <logger category="org.apache.catalina.core.AprLifecycleListener"> <level name="DEBUG"/> </logger> <logger category="org.jboss.as.controller.management-deprecated"> <level name="OFF"/> </logger> <logger category="org.jboss.as.clustering.web.infinispan"> <level name="TRACE"/> </logger> <root-logger> <level name="INFO"/> <handlers> <!-- <handler name="CONSOLE"/> --> <handler name="FILE"/> </handlers> </root-logger> <formatter name="PATTERN"> <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/> </formatter> <formatter name="COLOR-PATTERN"> <pattern-formatter pattern="%K{level}%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/> </formatter> </subsystem> |