티스토리 뷰


파일 이름을 변경해가며 로그를 출력할 수 있게 하는 방법이 필요해서

여러 개의 소스를 참고하면서 작성하였습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 import ch.qos.logback.classic.Level;
 import ch.qos.logback.classic.Logger;
 import ch.qos.logback.classic.LoggerContext;
 import ch.qos.logback.classic.encoder.PatternLayoutEncoder;
 import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.rolling.FixedWindowRollingPolicy;
 import ch.qos.logback.core.rolling.RollingFileAppender;
 import ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy;     
 
 public Logger createLoggerGivenFileName(String className, String file_log_name) {
    LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
    
    RollingFileAppender<ILoggingEvent> rollingFileAppender = new RollingFileAppender<ILoggingEvent>();
    rollingFileAppender.setFile("c:/" + file_log_name + ".log");
    rollingFileAppender.setContext(lc);
    
    FixedWindowRollingPolicy rollingPolicy = new FixedWindowRollingPolicy();
    rollingPolicy.setContext(lc);
    rollingPolicy.setParent(rollingFileAppender);
    rollingPolicy.setFileNamePattern("c:/" + file_log_name + ".%i" +".log" );
    rollingPolicy.start();
    
    SizeBasedTriggeringPolicy<ILoggingEvent> triggeringPolicy = new SizeBasedTriggeringPolicy<>("10MB");
    triggeringPolicy.start();
    
    PatternLayoutEncoder encoder = new PatternLayoutEncoder();
    encoder.setPattern("▶ %-5level %d{HH:mm:ss.SSS} [%thread] %logger[%method:%line] - %msg%n");
    encoder.setContext(lc);
    encoder.start();
    
    rollingFileAppender.setEncoder(encoder);
    rollingFileAppender.setRollingPolicy(rollingPolicy);
    rollingFileAppender.setTriggeringPolicy(triggeringPolicy);
    rollingFileAppender.start();
    
    Logger logger = (Logger) LoggerFactory.getLogger(className);
    logger.addAppender(rollingFileAppender);
    logger.setLevel(Level.INFO);
    logger.setAdditive(false); 
                               
    return logger;
  }
cs


Spring Boot를 사용하면서 ch.qos.logback 라이브러리 들이 활용 되었고, 

className과 생성될 파일 이름을 파라미터로 입력하여 Logger를 생성하여, 로그를 출력하면 되겟습니다.


까먹지 않기 위해 간단히 작성해보는 내용입니다.




댓글