41be827b81
- 비밀번호 규칙 클라이언트 검증 JS/SASS 추가 - 세션 기반 비밀번호 변경 강제 Interceptor 구현 (`PasswordChangeEnforcementInterceptor`) - URL 리팩토링 및 엔드포인트 변경 (`/password/*`) - 비밀번호 유효성 검사 공통화 (`PasswordRuleValidator`) - Logback ERROR 전용 파일 로그 추가
120 lines
5.4 KiB
XML
120 lines
5.4 KiB
XML
<configuration scan="false">
|
|
<shutdownHook class="ch.qos.logback.core.hook.DelayingShutdownHook"/>
|
|
|
|
<springProperty scope="context" name="profileLogPath" source="portal.logging.log-path"/>
|
|
|
|
<property name="LOG_PATH" value="${profileLogPath}/${inst.Name:-devSvr00}"/>
|
|
|
|
<property name="CONSOLE_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %magenta([%thread]) %highlight([%-3level]) %logger - %msg %n" />
|
|
|
|
<!-- 콘솔 로그 JVM 파라미터 제어 -->
|
|
<!-- 사용: -DCONSOLE_LOG_ENABLED=true -DCONSOLE_LOG_LEVEL=DEBUG -->
|
|
<!-- 기본값: 비활성(콘솔 OFF), 활성 시 레벨 INFO -->
|
|
<property name="CONSOLE_LOG_ENABLED" value="${CONSOLE_LOG_ENABLED:-false}"/>
|
|
<property name="CONSOLE_LOG_LEVEL" value="${CONSOLE_LOG_LEVEL:-INFO}"/>
|
|
<!-- enabled=true → 지정 레벨, false → OFF (대소문자 모두 대응) -->
|
|
<property name="__consoleLevel.true" value="${CONSOLE_LOG_LEVEL}"/>
|
|
<property name="__consoleLevel.TRUE" value="${CONSOLE_LOG_LEVEL}"/>
|
|
<property name="__consoleLevel.false" value="OFF"/>
|
|
<property name="__consoleLevel.FALSE" value="OFF"/>
|
|
<property name="CONSOLE_EFFECTIVE_LEVEL" value="${__consoleLevel.${CONSOLE_LOG_ENABLED}}"/>
|
|
|
|
|
|
<appender name="HIBERNATE_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
|
<file>${LOG_PATH}/hibernate.log</file>
|
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
|
<fileNamePattern>${LOG_PATH}/backup/hibernate.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
|
|
<maxFileSize>500MB</maxFileSize>
|
|
<maxHistory>7</maxHistory>
|
|
</rollingPolicy>
|
|
<encoder>
|
|
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
|
|
</encoder>
|
|
</appender>
|
|
|
|
<appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
|
<file>${LOG_PATH}/portal.log</file>
|
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
|
<fileNamePattern>${LOG_PATH}/backup/portal.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
|
|
<maxFileSize>500MB</maxFileSize>
|
|
<maxHistory>7</maxHistory>
|
|
</rollingPolicy>
|
|
<encoder>
|
|
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
|
|
</encoder>
|
|
</appender>
|
|
|
|
<appender name="HTTP_SESSION" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
|
<file>${LOG_PATH}/http-session.log</file>
|
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
|
<fileNamePattern>${LOG_PATH}/backup/http-session.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
|
|
<maxFileSize>500MB</maxFileSize>
|
|
<maxHistory>30</maxHistory>
|
|
</rollingPolicy>
|
|
<encoder>
|
|
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level - %msg%n</pattern>
|
|
</encoder>
|
|
</appender>
|
|
|
|
<!-- API 테스트베드(/api/call-api) 감사 로그: 요청지/헤더/마스킹된 본문 기록, 1년(365일) 보관 -->
|
|
<appender name="API_TESTER_AUDIT" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
|
<file>${LOG_PATH}/apitester-audit.log</file>
|
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
|
<fileNamePattern>${LOG_PATH}/backup/apitester-audit.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
|
|
<maxFileSize>200MB</maxFileSize>
|
|
<maxHistory>365</maxHistory>
|
|
</rollingPolicy>
|
|
<encoder>
|
|
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %msg%n</pattern>
|
|
</encoder>
|
|
</appender>
|
|
|
|
<!-- ERROR 레벨만 별도 수집(스택 트레이스 포함). 장애 원인 추적용. -->
|
|
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
|
<file>${LOG_PATH}/error.log</file>
|
|
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
|
<level>ERROR</level>
|
|
<onMatch>ACCEPT</onMatch>
|
|
<onMismatch>DENY</onMismatch>
|
|
</filter>
|
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
|
<fileNamePattern>${LOG_PATH}/backup/error.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
|
|
<maxFileSize>200MB</maxFileSize>
|
|
<maxHistory>30</maxHistory>
|
|
</rollingPolicy>
|
|
<encoder>
|
|
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
|
|
</encoder>
|
|
</appender>
|
|
|
|
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
|
|
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
|
<level>${CONSOLE_EFFECTIVE_LEVEL}</level>
|
|
</filter>
|
|
<encoder><Pattern>${CONSOLE_PATTERN}</Pattern></encoder>
|
|
</appender>
|
|
|
|
|
|
<logger name="eapim.portal.session" level="INFO" additivity="false">
|
|
<appender-ref ref="HTTP_SESSION" />
|
|
</logger>
|
|
|
|
<logger name="eapim.portal.apitester.audit" level="INFO" additivity="false">
|
|
<appender-ref ref="API_TESTER_AUDIT" />
|
|
</logger>
|
|
|
|
|
|
<root level="INFO">
|
|
<appender-ref ref="ROLLING"/>
|
|
<appender-ref ref="CONSOLE"/>
|
|
<appender-ref ref="ERROR_FILE"/>
|
|
</root>
|
|
|
|
<springProfile name="dev">
|
|
<root level="DEBUG">
|
|
<appender-ref ref="ROLLING"/>
|
|
<appender-ref ref="CONSOLE"/>
|
|
<appender-ref ref="ERROR_FILE"/>
|
|
</root>
|
|
</springProfile>
|
|
</configuration> |