2012-01-23 2 views
0

클래스에서 호출을 기록하려고하지만이 클래스를 사용하여 여러 스레드가 작동하고 있습니다. 난 단지 그 스레드가 내 FileAppenders에 의해 잡히고 사용 호출 싶어요.Logback/slf4j - 동시성 문제 및 출혈

현재 파일에서 데이터가 혼합되는 위치에 "출혈"이 있습니다. appenders를 클래스의 특정 인스턴스에 고정시키는 방법은 무엇입니까?

자세한 내용이 필요하면 알려주세요.

+0

(1) 클래스를 모니터로 만드는 것은 어떻습니까? (예, 한번에 동시성을 1 개의 스레드로 줄입니다). (2) 타임 스탬프가있는 다른 버퍼에 로깅합니다 (각 스레드가 자체 버퍼를 가질 수 있도록). 모든 사람들은 흔히 버퍼를 파일로 덤프하지만 타임 스탬프로 파일을 정렬해야합니다. – Adrian

+0

미안 해요 애드리안, 무슨 뜻인지 잘 모르겠습니까? 더 자세한 내용은? –

+0

출혈로 무엇을 의미하는지 확신 할 수 없습니다 (다른 것들을 기록하는 것과 함께 로깅됩니까?). 내 의견에서 어느 부분을 이해하지 못합니까? – Adrian

답변

1

패키지 및 특정 클래스를 구성하여 특정 appender에 출력 할 수 있습니다. 따라서 특정 스레드를 출력하거나 특정 클래스를 원한다면 고려하십시오. 일반적으로 나중에 만 필요합니다.

예를 들어, log4j에에가

<appender name="someLog" class="org.apache.log4j.FileAppender"> 
    <param name="File" value="/logs/foo.log"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%d %5p %C{1} - %t - %m%n"/> 
    </layout> 
</appender> 

<category name="com.foo.Bar" additivity="false"> 
    <priority value="warn"/> 
    <appender-ref ref="someLog"/> 
</category> 

다른 곳 적발되지 않은 경우, 클래스 com.foo.Barfoo.log 파일에 기록합니다 것.