사용자 도구

사이트 도구


java:logback

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
java:logback [2017/07/10 10:15]
kwon37xi [기본 Fixed Window Rolling File Appender]
java:logback [2023/09/21 13:21] (현재)
kwon37xi
줄 13: 줄 13:
   * logback-access : Tomcat/Jetty 등에 설치되어 웹 요청을 로깅할 수 있다.   * logback-access : Tomcat/Jetty 등에 설치되어 웹 요청을 로깅할 수 있다.
   * [[http://audit.qos.ch/|logback-audit]] : 장시간 추적이 필요한 비지니스 애플리케이션의 이벤트 로깅   * [[http://audit.qos.ch/|logback-audit]] : 장시간 추적이 필요한 비지니스 애플리케이션의 이벤트 로깅
 +
 +===== LOGBACK-1591 취약점 이슈 =====
 +  * 가급적 logback **1.2.9** 이상 버전을 사용할 것.
 +  * [[http://mailman.qos.ch/pipermail/announce/2021/000165.html|[qos.ch-announce] Secuirty Fix - logback 1.2.9 and 1.3.0-alpha11]]
 +  * [[https://jira.qos.ch/browse/LOGBACK-1591|[LOGBACK-1591] Possibility of vulnerability - QOS.ch JIRA]]
 +  * 발생 가능성은 희박한 편임.
 +  * [[https://github.com/cn-panda/logbackRceDemo|cn-panda/logbackRceDemo: The project is a simple vulnerability Demo environment written by SpringBoot. Here, I deliberately wrote a vulnerability environment where there are arbitrary file uploads, and then use the `scan` attribute in the loghack configuration file to cooperate with the logback vulnerability to implement RCE.]]
 +  * write access to logback.xml
 +  * use of versions < 1.2.8
 +  * reloading of poisoned configuration data, which implies application restart or scan="true" set prior to attack
  
 ===== 설정 ===== ===== 설정 =====
줄 101: 줄 111:
 </code> </code>
  
-==== Multi line to Single line ====+===== Multi line to Single line =====
 Grep 시에 여러줄로 된 로그를 올바로 grep하기 힘들 경우 multi line 을 single line으로 합쳐서 로깅하면 좀 더 편하게 로깅 가능하다. Grep 시에 여러줄로 된 로그를 올바로 grep하기 힘들 경우 multi line 을 single line으로 합쳐서 로깅하면 좀 더 편하게 로깅 가능하다.
  
 [[http://co-de-generation.blogspot.kr/2012/08/java-logging-in-single-line-for-grep.html|CoDeGeneration: Java: Logging in single line for grep]] [[http://co-de-generation.blogspot.kr/2012/08/java-logging-in-single-line-for-grep.html|CoDeGeneration: Java: Logging in single line for grep]]
  
-Layout 을 다음과 같이 지정하면 된다.+Layout 을 다음과 같이 지정하면 새줄기호(%%\n%%)가 %%\n%% 문자 그 자체로 표시다. 예외 Stacktrace까지 모두 한 줄로 합친다.
  
 +XML 설정의 경우에는
 <code> <code>
 %replace(%msg){"\n","\\n"} %replace(%xException){"\n", "\\n"}%nopex%n %replace(%msg){"\n","\\n"} %replace(%xException){"\n", "\\n"}%nopex%n
 </code> </code>
 +
 +<code>
 +-- 공백으로 변환됨.
 +%replace(%msg){'[\r\n]', ''}
 +</code>
 +
 +groovy 설정으로 할 경우에는 
 +<code>
 +%replace(%msg){"\n","\\n"} %replace(%xException){"\\n", "\\\\n"}%nopex%n
 +</code>
 +
 ===== Spring Framework ===== ===== Spring Framework =====
   * [[https://github.com/qos-ch/logback-extensions/wiki/Spring|Logback Spring Extension]]   * [[https://github.com/qos-ch/logback-extensions/wiki/Spring|Logback Spring Extension]]
줄 145: 줄 167:
 </code> </code>
  
-====== Filter ======+===== Filter =====
   * [[http://logback.qos.ch/manual/filters.html|Logback Filters]]   * [[http://logback.qos.ch/manual/filters.html|Logback Filters]]
  
-===== GEventEvaluator =====+==== GEventEvaluator ====
   * ''EventEvaluatorFilter''에서 [[:groovy|Groovy]] 로 필터 조건을 줄수 있는 Evaluator.   * ''EventEvaluatorFilter''에서 [[:groovy|Groovy]] 로 필터 조건을 줄수 있는 Evaluator.
   * ''ILoggingEvent'' 객체가 ''e'' 혹은 ''event'' 변수로 전달되며 ''TRACE'',''DEBUG'',...''ERROR''도 변수로 전달된다.   * ''ILoggingEvent'' 객체가 ''e'' 혹은 ''event'' 변수로 전달되며 ''TRACE'',''DEBUG'',...''ERROR''도 변수로 전달된다.
줄 173: 줄 195:
 </code> </code>
  
 +===== Stacktrace 에서 불필요한 스택 감추기 =====
 +<code xml>
 +<configuration>
 +    <property name="STACKTRACE_FILTER" value="
 +        불필요한 stack 문자열 나열,
 +        org.junit.platform.engine.,
 +        org.junit.platform.launcher.,
 +        org.junit.platform.commons.util.ReflectionUtils.,
 +        org.junit.jupiter.engine.,
 +        org.junit.jupiter.params.provider.,
 +        org.junit.jupiter.api.AssertThrows.,
 +        org.junit.jupiter.api.AssertDoesNotThrow.,
 +        org.assertj.core.api.AssertionsFor,
 +        org.assertj.core.api.ThrowableAssert.,
 +        org.gradle.
 +    "/>
 +
 +    <property name="CONSOLE_LOG_PATTERN"
 +              value=".... %exception{full,${STACKTRACE_FILTER}} %n"/>
 +
 +</code>
 +
 +  * 단점, ''String.contains()'' 로 검사한다.
 +  * Test 용 설정에 적용하면 좋음.
java/logback.1499651102.txt.gz · 마지막으로 수정됨: 2017/07/10 10:15 저자 kwon37xi