반응형
서로 다른 메시지를 두 파일에 기록하기 위한 로그백
logback/slf4j를 사용하여 로깅을 수행하고 있습니다.로그 파일을 해석하여 데이터를 분석하려고 합니다.따라서 (대부분이 debug 문으로 구성되어 있는) 큰 파일을 해석하는 대신 각각 다른 파일에 로그하는 로거 인스턴스를 2개(분석용과 전체 목적 로깅용)로 설정합니다.Logback이나 다른 로거로 이것이 가능한지 아는 사람이 있습니까?
로그백에서 이와 같은 작업을 수행할 수 있습니다.다음으로 설정 예를 나타냅니다.
<?xml version="1.0"?>
<configuration>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>logfile.log</file>
<append>true</append>
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern>
</encoder>
</appender>
<appender name="ANALYTICS-FILE" class="ch.qos.logback.core.FileAppender">
<file>analytics.log</file>
<append>true</append>
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern>
</encoder>
</appender>
<!-- additivity=false ensures analytics data only goes to the analytics log -->
<logger name="analytics" level="DEBUG" additivity="false">
<appender-ref ref="ANALYTICS-FILE"/>
</logger>
<root>
<appender-ref ref="FILE"/>
</root>
</configuration>
그런 다음 다음과 같은 분석 데이터를 기록하기 위한 로거와 모든 로거를 각각 2개씩 설정합니다.
Logger analytics = LoggerFactory.getLogger("analytics");
벌목꾼은 얼마든지 가질 수 있습니다.그러나 각 패키지에 대해 다르게 기록해야 하는 항목이 있는 것이 좋습니다.그러면 해당 패키지와 하위 패키지의 모든 클래스가 해당 특정 로거를 가져옵니다.모두 additivity="true"를 사용하여 루트 로거를 공유하고 로그 데이터를 루트 로거 앱엔더로 전송할 수 있습니다.다음은 예를 제시하겠습니다.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="pattern" value="%date{HH:mm:ss.SSS} %-5p %logger{36}
%X{akkaSource} [%file:%line] - %m%n" />
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%date{HH:mm:ss.SSS} %-5p %logger{36} %X{akkaSource} [%file:%line] - %m%n</pattern>
</encoder>
</appender>
<appender name="abc" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${catalina.base}/logs/worker.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${catalina.base}/logs/worker-%d{yyyy-MM-dd_HH}.log</fileNamePattern>
<maxHistory>360</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${pattern}</pattern>
</encoder>
</appender>
<appender name="xyz" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${catalina.base}/logs/transformer.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${catalina.base}/logs/transformer-%d{yyyy-MM-dd_HH}.log</fileNamePattern>
<maxHistory>360</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${pattern}</pattern>
</encoder>
</appender>
<logger name="com.xxx.yyy.zzz" level="INFO" additivity="true">
<appender-ref ref="xyz"/>
</logger>
<logger name="com.aaa.bbb.ccc" level="INFO" additivity="true">
<appender-ref ref="abc"/>
</logger>
<root>
<level value="INFO" />
<appender-ref ref="STDOUT" />
</root>
내 경우, 나는 로그 이름으로 클래스 이름을 남기고 싶었다.
private static final Logger log = LoggerFactory.getLogger(ScheduledPost.class);
그리고 그런 수업을 거의 받지 못했기 때문에logback.xml
<!--additivity=false ensures this log data only goes to the this log, and no one more -->
<logger name="xxx.xxx.xxx.ScheduledPost" level="DEBUG" additivity="false">
<appender-ref ref="ASYNC_SCHEDULE_LOG_FILE"/>
</logger>
<logger name="xxx.xxx.xxx.GcmPost" level="DEBUG" additivity="false">
<appender-ref ref="ASYNC_SCHEDULE_LOG_FILE"/>
</logger>
<logger name="xxx.xxx.xxx.PushUtils" level="DEBUG" additivity="false">
<appender-ref ref="ASYNC_SCHEDULE_LOG_FILE"/>
</logger>
언급URL : https://stackoverflow.com/questions/2488558/logback-to-log-different-messages-to-two-files
반응형
'source' 카테고리의 다른 글
페이지 새로고침 또는 직접 액세스 후 vuex-module에서 인증에 액세스할 수 없음 (0) | 2022.09.01 |
---|---|
런타임에 Maven 아티팩트 버전 가져오기 (0) | 2022.09.01 |
컴포넌트 슬롯 내에서 계산된 속성을 사용할 수 있습니까? (0) | 2022.09.01 |
Eclipse의 Java 프로젝트:java.lang 타입.개체를 확인할 수 없습니다.필요한 .class 파일에서 간접적으로 참조됩니다. (0) | 2022.09.01 |
Vuex 상태가 잘못된 값을 반환함 (0) | 2022.09.01 |