2013-02-26 2 views
2

JBoss EAP에 grails 응용 프로그램을 배포하려고하는데 문제는 응용 프로그램의 출력이 stdout 및 stderr를 제외하고 기록되지 않는 것입니다. jboss가 내부 로깅 시스템을 사용하고 grails가 log4j를 사용하기 때문에 로깅이이 경우 어떻게 작동하는지 이해하지 못합니다. 기본값은Grails 및 JBoss AS/EAP 로깅이 인쇄되지 않습니다.

<subsystem xmlns="urn:jboss:domain:logging:1.1"> 
     <console-handler name="CONSOLE"> 
      <level name="INFO"/> 
      <formatter> 
       <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/> 
      </formatter> 
     </console-handler> 
     <periodic-rotating-file-handler name="FILE"> 
      <formatter> 
       <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/> 
      </formatter> 
      <file relative-to="jboss.server.log.dir" path="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="sun.rmi"> 
      <level name="WARN"/> 
     </logger> 
     <logger category="jacorb"> 
      <level name="WARN"/> 
     </logger> 
     <logger category="jacorb.config"> 
      <level name="ERROR"/> 
     </logger> 
     <root-logger> 
      <level name="INFO"/> 
      <handlers> 
       <handler name="CONSOLE"/> 
       <handler name="FILE"/> 
      </handlers> 
     </root-logger> 
    </subsystem> 

입니다 :

이 standalone.xml 내 로깅 구성이다.

이 log4j 구성 내 Config.groovy 파일에 있습니다

// log4j configuration 
log4j = { 
    // Example of changing the log pattern for the default console appender: 
    // 
    //appenders { 
    // console name:'stdout', layout:pattern(conversionPattern: '%c{2} %m%n') 
    //} 

    error 'org.codehaus.groovy.grails.web.servlet',  // controllers 
      'org.codehaus.groovy.grails.web.pages',   // GSP 
      'org.codehaus.groovy.grails.web.sitemesh',  // layouts 
      'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping 
      'org.codehaus.groovy.grails.web.mapping',  // URL mapping 
      'org.codehaus.groovy.grails.commons',   // core/classloading 
      'org.codehaus.groovy.grails.plugins',   // plugins 
      'org.codehaus.groovy.grails.orm.hibernate',  // hibernate integration 
      'org.springframework', 
      'org.hibernate', 
      'net.sf.ehcache.hibernate' 

    all additivity: false, console: [ 
      'grails.app.controllers.com.redhat.theses', 
      'grails.app.domain.your.com.redhat.theses', 
      'grails.app.services.com.redhat.theses', 
      'grails.app.taglib.com.redhat.theses', 
      'grails.app.conf.com.redhat.theses', 
      'grails.app.filters.com.redhat.theses' 
    ] 
} 

난 정말이 로깅 물건을 이해하지 못하고, 그것은되는 혼란, 내가 원하는 모든 우선, 적어도 모든 오류를 기록하는 것입니다. 그러한 중요한 기능이 기본적으로 작동한다고 생각할 수 있습니다.

나는 JBoss의 시작이 속성을 설정하면 : 내가 원하는대로

./standalone.sh -Dorg.jboss.as.logging.per-deployment=false 

정확히 작동합니다. 하지만 괜찮은거야? 로깅과 같은 중요한 기능을 사용하려면이 속성을 설정해야하는 이유는 무엇입니까?

약간의 오만함이 들리면 유감스럽게 생각합니다. 나는 이것을 몇 시간 동안 알아 내려고 노력해 왔으며, 처음에는 여전히 내가 있었던 곳입니다.

+0

JBoss EAP 버전이 도움이 될 것입니다. 또한 관련 답변 (http://stackoverflow.com/questions/12670415/log4j-doesnt-log-anything-under-jboss-6-eap)을 참조하십시오. –

+0

JBoss EAP 6.0.0. 지금 당장 언급하지 않으셔서 죄송합니다. 나는 질문을 빨리 할 것이다, 고마워한다! – VaclavDedik

답변

2

org.jboss.as.logging.per- deployment 환경 변수 인 AKA 호스트 속성 인 AKA 환경 등록 정보는 JBoss에 사용할 로깅 구성을 알려줍니다. true로 설정하면 JBoss가 배포되는 응용 프로그램에서 로깅 설정을 사용합니다. Grails Config.groovy에서 어떻게 설정해야할지 모르겠다. 해당 호스트 속성을 false로 설정 한 후 JBoss에서 config를 수행합니다. False는 JBoss에서 로깅 설정을 사용한다는 의미입니다.

JBoss에서 속성을 false로 설정 한 다음 grails.app 카테고리를 만들고 파일 핸들러에 기록하도록합니다. Grails와 EAP 6.0에서 나에게 도메인 모드로 실행됩니다.

관련 문제