문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 다음 판 | 이전 판 | ||
|
java:logback:config_groovy [2013/07/10 16:20] kwon37xi 새로 만듦 |
java:logback:config_groovy [2016/01/04 14:00] (현재) kwon37xi [File Appender Options] |
||
|---|---|---|---|
| 줄 8: | 줄 8: | ||
| def logPattern = args.pattern ?: ' | def logPattern = args.pattern ?: ' | ||
| def maxHistoryCount = args.maxHistory ?: 10 | def maxHistoryCount = args.maxHistory ?: 10 | ||
| + | def minLevel = args.level | ||
| + | def logMarker = args.marker | ||
| + | | ||
| appender(appenderName, | appender(appenderName, | ||
| file = " | file = " | ||
| 줄 19: | 줄 21: | ||
| encoder(PatternLayoutEncoder) { | encoder(PatternLayoutEncoder) { | ||
| pattern = logPattern | pattern = logPattern | ||
| + | } | ||
| + | |||
| + | if (minLevel != null) { | ||
| + | filter(ch.qos.logback.classic.filter.ThresholdFilter) { | ||
| + | level = minLevel | ||
| + | } | ||
| + | } else if (logMarker != null) { | ||
| + | filter(ch.qos.logback.core.filter.EvaluatorFilter) { | ||
| + | evaluator(ch.qos.logback.classic.boolex.OnMarkerEvaluator) { | ||
| + | marker = logMarker | ||
| + | } | ||
| + | onMismatch = ch.qos.logback.core.spi.FilterReply.DENY | ||
| + | onMatch = ch.qos.logback.core.spi.FilterReply.NEUTRAL | ||
| + | } | ||
| } | } | ||
| } | } | ||
| } | } | ||
| - | addDailyRollingFileAppender(name: | + | // 호출 방식 |
| + | addDailyRollingFileAppender(name: | ||
| + | | ||
| + | | ||
| </ | </ | ||
| + | |||
| + | ===== FixedWindowRollingPolicy ===== | ||
| + | <code groovy> | ||
| + | // 10MB 기준으로 롤링한다. | ||
| + | appender(' | ||
| + | file = '/ | ||
| + | append = true | ||
| + | |||
| + | encoder(PatternLayoutEncoder) { | ||
| + | pattern = ' | ||
| + | } | ||
| + | |||
| + | filter(ch.qos.logback.classic.filter.ThresholdFilter) { | ||
| + | level = ERROR | ||
| + | } | ||
| + | |||
| + | rollingPolicy(ch.qos.logback.core.rolling.FixedWindowRollingPolicy) { | ||
| + | fileNamePattern = '/ | ||
| + | minIndex = 1 | ||
| + | maxIndex = 5 | ||
| + | } | ||
| + | |||
| + | triggeringPolicy(ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy) { | ||
| + | maxFileSize = ' | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ===== Logger additivity ===== | ||
| + | * 특정 로거의 경우 특정 Appender로만 로그를 쌓고 root 로거로는 로그를 쌓고싶지 않을 때 '' | ||
| + | * 특정 로그만 처리할 Appender는 root 로거의 Appender로 추가하지 않는다. | ||
| + | |||
| + | <code groovy> | ||
| + | // specialappender 생성 | ||
| + | |||
| + | logger(' | ||
| + | |||
| + | // root 로거에 specialappender를 추가하면 com.somthing.special 가 아닌 다른 로거들까지 해당 Appender가 처리하게 됨. | ||
| + | root(INFO, [' | ||
| + | </ | ||
| + | |||
| + | ===== File Appender Options ===== | ||
| + | * '' | ||
| + | * '' | ||
| + | * 단, '' | ||
| + | * '' | ||
| + | * 파일 압축을 사용할 수 없다. | ||
| + | * '' | ||
| + | * 이런 저런 성능상의 문제나 제약이 많은 듯. 가능하면 사용하지 말기. | ||
| + | |||
| + | ===== JMXConfiguration ===== | ||
| + | <code groovy> | ||
| + | jmxConfigurator() | ||
| + | |||
| + | // 혹은 | ||
| + | jmxConfigurator(' | ||
| + | |||
| + | // 혹은 | ||
| + | jmxConfigurator(' | ||
| + | </ | ||
| + | |||
| + | JMX를 통해 로그 레벨을 바꾸려면 JConsole 등으로 접속하여 '' | ||
| + | |||
| + | |||
| + | ===== IntelliJ IDEA 대응 ===== | ||
| + | * IntelliJ IDEA 12버전 이하는 기본적으로 '' | ||
| + | * **Settings -> Compiler -> Resource patterns**의 맨 끝에 ''; | ||
| + | |||
| + | ===== Status Listener ===== | ||
| + | [[http:// | ||
| + | <code groovy> | ||
| + | statusListener(OnConsoleStatusListener) // console로 logback 현재 상태를 출력함 | ||
| + | </ | ||
| + | |||