Skip to content

Commit

Permalink
Merge pull request #218 from KUSITMS-27-chilling/feat/logback
Browse files Browse the repository at this point in the history
feat: logback μ„€μ • μΆ”κ°€
  • Loading branch information
ywj9811 authored Jun 23, 2023
2 parents 6156006 + 43d55de commit 7e43abf
Show file tree
Hide file tree
Showing 2 changed files with 92 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -38,25 +38,25 @@ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse
if (StringUtils.hasText(jwt) && tokenProvider.validateToken(jwt) && tokenProvider.checkBlackList(jwt)) {
//jwtλ₯Ό 가지고 μžˆλŠ”κ°€, μ˜¬λ°”λ₯Έκ°€, λΈ”λž™λ¦¬μŠ€νŠΈμ— λ“±λ‘λ˜μ–΄μžˆλŠ”κ±΄ μ•„λ‹Œκ°€
if (requestURI.contains("/user/re-issue")) {
log.info("Token μž¬λ°œκΈ‰ μ§„ν–‰μ‹œ μœ νš¨μ„± 검사");
log.debug("Token μž¬λ°œκΈ‰ μ§„ν–‰μ‹œ μœ νš¨μ„± 검사");
checkRefreshTokenAndReIssueAccessToken(jwt);
}

Authentication authentication = tokenProvider.getAuthentication(jwt);
SecurityContextHolder.getContext().setAuthentication(authentication);
log.info("Security Context에 '{}' 인증 정보λ₯Ό μ €μž₯ν–ˆμŠ΅λ‹ˆλ‹€, uri: {}", authentication.getName(), requestURI);
log.debug("Security Context에 '{}' 인증 정보λ₯Ό μ €μž₯ν–ˆμŠ΅λ‹ˆλ‹€, uri: {}", authentication.getName(), requestURI);
}
} catch (SecurityException | MalformedJwtException e) {
log.info("exception", e.getMessage());
log.error("exception", e.getMessage());
throw new SecurityException.InvalidJwtFormatException(JwtExcpetionMessage.INVALID_FORMAT.getMessage(), JwtExcpetionCode.INVALID_FORMAT.getCode(), HttpStatus.FORBIDDEN);
} catch (ExpiredJwtException e) {
log.info("exception", e.getMessage());
log.error("exception", e.getMessage());
throw new SecurityException.ExpiredJwtException(JwtExcpetionMessage.JWT_EXPIRED.getMessage(), JWT_EXPIRED.getCode(), HttpStatus.FORBIDDEN);
} catch (UnsupportedJwtException e) {
log.info("exception", e.getMessage());
log.error("exception", e.getMessage());
throw new SecurityException.NonSupportedJwtException(JwtExcpetionMessage.JWT_NOT_SUPPORTED.getMessage(), JWT_NOT_SUPPORTED.getCode(), HttpStatus.FORBIDDEN);
} catch (IllegalArgumentException e) {
log.info("exception", e.getMessage());
log.error("exception", e.getMessage());
throw new SecurityException.WrongTokenException(JwtExcpetionMessage.WRONG_TOKEN.getMessage(), WRONG_TOKEN.getCode(), HttpStatus.FORBIDDEN);
} catch (Exception e) {
throw new SecurityException.UnKnownException(JwtExcpetionMessage.UNKHOWN_EXCEPTION.getMessage(), UNKHOWN_EXCEPTION.getCode(), HttpStatus.FORBIDDEN);
Expand Down
86 changes: 86 additions & 0 deletions src/main/resources/logback-spring.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>[%d{yyyy-MM-dd HH:mm:ss}:%-3relative][%thread] %-5level %logger{36} - %msg%n</Pattern>
</layout>
</appender>
<appender name="INFO_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>./logs/info.log</file> <!-- νŒŒμΌμ„ μ €μž₯ν•  경둜λ₯Ό μ •ν•œλ‹€ -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch> <!-- ν•΄λ‹Ή 레벨만 κΈ°λ‘ν•œλ‹€. -->
<onMismatch>DENY</onMismatch> <!-- λ‹€λ₯Έ μˆ˜μ€€μ˜ λ ˆλ²¨μ€ κΈ°λ‘ν•˜μ§€ μ•ŠλŠ”λ‹€.(μƒμœ„ λ ˆλ²¨λ„ 기둝 μ•ˆν•¨), μƒμœ„ μˆ˜μ€€μ˜ λ ˆλ²¨μ— λŒ€ν•œ 기둝을 μ›ν•˜λ©΄ ACCEPT 둜 ν•˜λ©΄ κΈ°λ‘λœλ‹€. -->
</filter> <!-- λ ˆλ²¨λ³„ 필터링이 ν•„μš”μ—†μ„ 경우 filter class κ΄€λ ¨λœ 뢀뢄을 μ‚­μ œν•˜λ©΄ 됨-->
<encoder>
<pattern>[%d{yyyy-MM-dd HH:mm:ss}:%-3relative][%thread] %-5level %logger{35} - %msg%n</pattern> <!-- ν•΄λ‹Ή νŒ¨ν„΄ λ„€μ΄λ°μœΌλ‘œ ν˜„μž¬ λ‘œκ·Έκ°€ 기둝됨 -->
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>./was-logs/info.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern> <!-- ν•΄λ‹Ή νŒ¨ν„΄ λ„€μ΄λ°μœΌλ‘œ 이전 파일이 기둝됨 -->
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize> <!-- ν•œ 파일의 μ΅œλŒ€ μš©λŸ‰ -->
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>180</maxHistory> <!-- ν•œ 파일의 μ΅œλŒ€ μ €μž₯ κΈ°ν•œ -->
</rollingPolicy>
</appender>
<appender name="WARN_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>./logs/warn.log</file> <!-- νŒŒμΌμ„ μ €μž₯ν•  경둜λ₯Ό μ •ν•œλ‹€ -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>WARN</level>
<onMatch>ACCEPT</onMatch> <!-- ν•΄λ‹Ή 레벨만 κΈ°λ‘ν•œλ‹€. -->
<onMismatch>DENY</onMismatch> <!-- λ‹€λ₯Έ μˆ˜μ€€μ˜ λ ˆλ²¨μ€ κΈ°λ‘ν•˜μ§€ μ•ŠλŠ”λ‹€.(μƒμœ„ λ ˆλ²¨λ„ 기둝 μ•ˆν•¨), μƒμœ„ μˆ˜μ€€μ˜ λ ˆλ²¨μ— λŒ€ν•œ 기둝을 μ›ν•˜λ©΄ ACCEPT 둜 ν•˜λ©΄ κΈ°λ‘λœλ‹€. -->
</filter> <!-- λ ˆλ²¨λ³„ 필터링이 ν•„μš”μ—†μ„ 경우 filter class κ΄€λ ¨λœ 뢀뢄을 μ‚­μ œν•˜λ©΄ 됨-->
<encoder>
<pattern>[%d{yyyy-MM-dd HH:mm:ss}:%-3relative][%thread] %-5level %logger{35} - %msg%n</pattern> <!-- ν•΄λ‹Ή νŒ¨ν„΄ λ„€μ΄λ°μœΌλ‘œ ν˜„μž¬ λ‘œκ·Έκ°€ 기둝됨 -->
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>./was-logs/warn.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern> <!-- ν•΄λ‹Ή νŒ¨ν„΄ λ„€μ΄λ°μœΌλ‘œ 이전 파일이 기둝됨 -->
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize> <!-- ν•œ 파일의 μ΅œλŒ€ μš©λŸ‰ -->
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>180</maxHistory> <!-- ν•œ 파일의 μ΅œλŒ€ μ €μž₯ κΈ°ν•œ -->
</rollingPolicy>
</appender>
<appender name="ERROR_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>./logs/error.log</file> <!-- νŒŒμΌμ„ μ €μž₯ν•  경둜λ₯Ό μ •ν•œλ‹€ -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch> <!-- ν•΄λ‹Ή 레벨만 κΈ°λ‘ν•œλ‹€. -->
<onMismatch>DENY</onMismatch> <!-- λ‹€λ₯Έ μˆ˜μ€€μ˜ λ ˆλ²¨μ€ κΈ°λ‘ν•˜μ§€ μ•ŠλŠ”λ‹€.(μƒμœ„ λ ˆλ²¨λ„ 기둝 μ•ˆν•¨), μƒμœ„ μˆ˜μ€€μ˜ λ ˆλ²¨μ— λŒ€ν•œ 기둝을 μ›ν•˜λ©΄ ACCEPT 둜 ν•˜λ©΄ κΈ°λ‘λœλ‹€. -->
</filter> <!-- λ ˆλ²¨λ³„ 필터링이 ν•„μš”μ—†μ„ 경우 filter class κ΄€λ ¨λœ 뢀뢄을 μ‚­μ œν•˜λ©΄ 됨-->
<encoder>
<pattern>[%d{yyyy-MM-dd HH:mm:ss}:%-3relative][%thread] %-5level %logger{35} - %msg%n</pattern> <!-- ν•΄λ‹Ή νŒ¨ν„΄ λ„€μ΄λ°μœΌλ‘œ ν˜„μž¬ λ‘œκ·Έκ°€ 기둝됨 -->
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>./was-logs/error.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern> <!-- ν•΄λ‹Ή νŒ¨ν„΄ λ„€μ΄λ°μœΌλ‘œ 이전 파일이 기둝됨 -->
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize> <!-- ν•œ 파일의 μ΅œλŒ€ μš©λŸ‰ -->
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>180</maxHistory> <!-- ν•œ 파일의 μ΅œλŒ€ μ €μž₯ κΈ°ν•œ -->
</rollingPolicy>
</appender>

<root level="INFO">
<appender-ref ref="STDOUT"/>
</root>

<logger name="chilling.encore.global.exception.GlobalException" additivity="false">
<level value = "DEBUG" />
<appender-ref ref="INFO_LOG" />
<appender-ref ref="WARN_LOG" />
<appender-ref ref="ERROR_LOG" />
</logger>
<logger name="chilling.encore.global.config.security.jwt.filter.JwtFilter" additivity="false">
<level value = "DEBUG" />
<appender-ref ref="INFO_LOG" />
<appender-ref ref="WARN_LOG" />
<appender-ref ref="ERROR_LOG" />
</logger>
<logger name="chilling.encore.global.config.security.geoIp.IpAuthenticationFilter" additivity="false">
<level value = "DEBUG" />
<appender-ref ref="INFO_LOG" />
<appender-ref ref="WARN_LOG" />
<appender-ref ref="ERROR_LOG" />
</logger>

</configuration>

0 comments on commit 7e43abf

Please sign in to comment.