본문 바로가기
FullStack/21. Java

[Logback] 로그파일 경로 확인 방법

by nakanara 2021. 2. 9.
반응형

 

logback 변수 확인 방법

Logback에서 값을 가져오기 위해서는 우선 해당 변수의 scope가 context로 설정되어 있어야 한다.
기본적으로는 local로 설정되어 있다.

  • local: logback 설정 파일을 해석하는 동안만 활성화
  • context: context에서 사용 가능하도록 삽입
  • system: JVM의 환경변수 삽입
<configuration>

  <property scope="context" name="log_home" value="/logs/app" />

  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>${log_home}/myApp.log</file>
    <encoder>
      <pattern>%msg%n</pattern>
    </encoder>
  </appender>

  <root level="error">
    <appender-ref ref="FILE" />
  </root>
</configuration>
import ch.qos.logback.classic.LoggerContext;
import org.slf4j.LoggerFactory;

LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
String log_home = lc.getProperty("log_home");
// 결과
/logs/app

로그 경로 확인 방법

appender로 설정된 정보 가져오기

<configuration>

  <property scope="context" name="log_home" value="/logs/app" />

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

      <!-- keep 30 days' worth of history capped at 3GB total size -->
      <maxHistory>30</maxHistory>
      <totalSizeCap>3GB</totalSizeCap>

    </rollingPolicy>

    <encoder>
      <charset>UTF-8</charset>
      <Pattern>%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n</Pattern>
    </encoder>
  </appender>

  <logger name="com.x.y.z" level="info" >
    <appender-ref ref="FILE" />
  </logger>

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

</configuration>

LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
Logger logger = lc.getLogger("com.x.y.z");


// 해당 Appender의 상세한 정보가 필요한 경우
RollingFileAppender<ILoggingEvent> xyz 
  = (RollingFileAppender<ILoggingEvent>) logger.iteratorForAppenders().next();

TimeBasedRollingPolicy rollingPolicy 
  = (TimeBasedRollingPolicy) xyz.getRollingPolicy();

String activeFile = rollingPolicy.getActiveFileName();  // 활성화 된 로그 파일 명
String filePath = rollingPolicy.getFileNamePattern();   // 로그파일 패턴
rollingPolicy.getMaxHistory();  // 유지일
// 결과
/logs/app/myApp.txt
/egene/logs//cfg.%d{yyyy-MM-dd}.log
30

참고

#logback #log

반응형