2013-03-08 4 views
0

디버깅 및 로그 교체를 위해 logback-classic을 사용하려고 생각했던 프로젝트에서 작업하고 있습니다. JBoss 7.1 Application Server에 배포 할 .war 파일을 만들고 작성하기 위해 Maven 컨텍스트에서이 파일을 사용하고 있습니다.Jboss 및 Spring의 Logback-classic

코드의 resources 폴더에 logback.xml 파일을, test/resources의 logback-test.xml을 배치했습니다.

현재 사용하고있는 jar 파일은 실제 디버깅을 인쇄하는 SLF4J입니다.

public class MyClass extends MultiActionController { 
    private Logger logger = LoggerFactory.getLogger(MyClass.class); 

    public MyClass() { 
    logger.debug("hello"); 
    } 
} 

내가 메이븐 자체 작동의 코드에 JUnit 테스트를 실행하지만 .war 파일을 구축 한 후 내가 STDOUT에서 디버깅을하지 않는도 내가 만든 파일을 찾을 수 있습니다.

내가 config 파일에서 STDOUT의 실제 기록을 삭제 한 것을 알고 있지만, 로깅이 어디로 ...

logback.xml :

<?xml version="1.0" encoding="UTF-8" ?> 
<configuration> 
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 

     <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> 
      <level>DEBUG</level> 
     </filter> 

     <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
      <FileNamePattern>logs/myproject.%d{yyyy-MM-dd}.log</FileNamePattern> 
      <MaxHistory>30</MaxHistory> 
     </rollingPolicy> 

     <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> 
      <pattern>%d{yyMMdd HH:mm:ss.SSS} [%-5.5level] [%-25.25logger] %msg%n</pattern> 
     </encoder> 
    </appender> 

    <root level="debug"> 
     <appender-ref ref="FILE" /> 
    </root> 
</configuration> 

폴더의 "로그 "JBoss 인스턴스에서이를 명시 적으로 생성해야합니까, 아니면 이것을 참조하기 위해 상대방을 참조해야합니까? 아니면 내가 놓친 것이 있습니까? logback.xml 파일을 JBoss 인스턴스에 넣어야합니까?

가장, 헨릭

답변

2

첫째로 당신은 logback.xml 클래스 경로에서, 예를 들어 있는지 확인해야합니다 은 Chapter 3: Logback configuration에 언급되어 있습니다.

Chapter 4: Appenders는에 대한 FileAppender 및 RollingFileAppender 특성 * 파일의 이름으로 작성하는 문자열 * 파일

등을 언급하고있다. 파일이 없으면 파일이 작성됩니다. MS Windows 플랫폼 사용자는 대개 슬래시를 피하는 것을 잊어 버립니다. 예를 들어 '\ t'는 단일 탭 문자 (\ u0009)로 해석되는 이스케이프 시퀀스이므로 c : \ temp \ test.log 값은 제대로 해석되지 않습니다. 올 Y 른 값은 c : /temp/test.log 또는 c : \ temp \ test.log로 지정할 수 있습니다. 파일 옵션에는 기본값이 없습니다. 파일의 상위 디렉토리가 존재하지 않으면 FileAppender는 필요하지만 존재하지 않는 상위 디렉토리를 포함하여 FileAppender를 자동으로 만듭니다.

예는 logback.xml는 다음과 같습니다위한 것입니다 : -

<configuration> 
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    <file>logFile.log</file> 
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
     <!-- daily rollover --> 
     <fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern> 

     <!-- keep 30 days' worth of history --> 
     <maxHistory>30</maxHistory> 
    </rollingPolicy> 

    <encoder> 
     <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern> 
    </encoder> 
    </appender> 

    <root level="DEBUG"> 
    <appender-ref ref="FILE" /> 
    </root> 
</configuration> 

난이 도움이 될 수 있기를 바랍니다.

+0

음 .... 파일이 WEB-INF의/classes 폴더 외부에서 끝나는 것일 수 있습니다. 확인해야합니다. 탈출에 관해서는, 나는 결국 OSX와 리눅스 서버를 사용하지 않고있다. – Hiny

+0

파일이 .war 파일의 WEB-INF/classes/폴더에있는 것 같습니다 ... 로그 파일의 경로, 존재해야합니까, 아니면 만들어야합니까? I.E 폴더? – Hiny

+0

태그 ' ...'이 필요합니다. 로그 파일을 저장할 전용 디렉토리를 만드는 것이 좋습니다. '/ home/myapp/logs'에 있습니다. 그런 다음 구성은 ' /home/myapp/logs/logFile.log'이어야합니다. ** 편집 ** : 경로 권한은 JBoss가 로그 파일을 쓸 수있게합니다. –

0

파일 태그를 정의해야합니다 (앞에서 설명한 답변과 동일). 그러나 당신은 또한 그것이 어떻게 해석되는지를 알아야합니다. Logback은에서 사용되는 응용 프로그램을 기준으로보고 만 당신의 보스의 루트 (더 구체적인에서 "로그"- 폴더를 만들어야합니다

<file>logs/<myfile>.log</file> 

logback 을 사용 그래서 만약 :.하여 폴더. 당신이 그것을 시작하는 sh 스크립트가 위치해 있습니다). JBoss의 루트에서 로그 폴더와 파일을 찾을 수 있는지 확인하십시오.

+0

내 bin 구조에 logs 폴더가있을 수 있습니다. 나는 그것을 조사 할 것이다. – Hiny