2013-11-02 2 views
2

최근에 Logback을 시작했고 공식 문서를 살펴 보았습니다. 내 프로젝트 중 하나에서 구현하는 동안 클래스 경로 또는 대상 폴더/logs/myapp.log 내의 파일에 로그를 쓰는 방법이 있는지 궁금합니다. 공식 문서에 대한 많은 정보를 찾을 수 없었습니다 (예, 변수 대체를 읽었습니다). LOGBACK : 클래스 패스의 파일에 로그 쓰기

<appender name="FILE" class="ch.qos.logback.core.FileAppender"> 
     <file>clientLog.log</file> 
     <append>true</append> 
     <!-- encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder 
      by default --> 
     <encoder> 
      <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n 
      </pattern> 
     </encoder> 
    </appender> 


    <root level="INFO"> 
     <appender-ref ref="FILE" /> 

    </root> 

</configuration> 

지금 나는 clientLog.log 파일을 대상 폴더 (Maven 프로젝트) 내에서 생성 할 :

여기 내 logback.xml입니다. 모든 포인터를 부탁드립니다.

+1

당신은'target/logs/clientLog.log'를 시도 했습니까? 'project.build.directory', 즉 런타임에 대상 폴더를 사용할 수 없습니다. – Boj

+0

예, 시도했습니다. 작동하지 않는 것 같습니다. 하지만 {catalina.base} 속성 (Tomcat을 사용하고 있습니다)이 작동합니다. – va1b4av

답변

2

응용 프로그램의 클래스 경로에있는 파일에 쓰는 표준 메커니즘을 찾을 수 있을지 의심 스럽습니다. 클래스 패스의 내용은 일반적으로 읽기 전용입니다.

마찬가지로 빌드 환경의 일부 위치 (예 : "대상"디렉토리)에서 로그를 명시 적으로 지원하는 메커니즘을 찾을 수 없습니다. 일반적으로 응용 프로그램은 빌드 환경에서 실행되지 않습니다.

그래서 가장 실질적인 해결책은 두 개의 별도 로깅 구성 파일을 갖는 것입니다. 즉 하나는 개발 플랫폼 용이고 다른 하나는 배포 플랫폼 용입니다. 다른 로깅 구성 파일에서 다른 로그 파일 경로 이름을 사용하십시오. 상대적인 경로 이름 target/logs/clientLog.log가 작동하지 않는 경우


은 다음 기회는 응용 프로그램 (예를 들어, Tomcat 서버)를 실행하면 뭔가 "현재 디렉토리"를 변경하는 것이 있습니다. 하지만 (AFAIK) Tomcat에서는 정상입니다.

2

질문을 이해했다면 환경 변수로 경로를 설정하여 작업을 수행 할 수 있습니다.

<property name="LOGDIR" value="${app.workdir}/log" />

    1. 하나 개의 변수를 생성 말 : 여기에 일이 당신이해야 할 수 있습니다 > 파일 펜더에서
    2. 는 파일 경로를 추가로 :

    <File>${LOGDIR}/${FILE_NAME}-${bySecond}.log</File>

    여기에 귀하의 파일은 $ LOGDIR 디렉토리에 생성 얻을 것이다. 이제 문제는 "LOGDIR"값을 설정하는 방법입니다. 시스템 i 변수로 app.workdir SET Java 응용 프로그램에서

    , 전자

    는 는

    System.setProperty를 ("app.workdir", "YOUR_TARGET_PATH")는

    나를 알고하자 너 혼란스러워.

0

Mac을 사용하는 경우 $ {catalina.base}/userLog와 같은 절대 경로를 사용하십시오.% {d를 YYYY-MM-DD가} 톰캣하에 을 .log로

가 ../userLog.%d{yyyy-MM-dd}.log 같은 상대 경로로 작동하지

그래서 그것은 생각 어떤 변수를 사용하는 것이 좋다.

관련 문제