728x90
spring과 mybatis로 개발시에 공통 부분의 sql log를 숨기고 싶을때가 있다.
해당 sql 로그를 숨기려면 org.codehaus.janino 라이브러리가 필요하다.
pom.xml
<!-- 추가(logback)-->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<version>2.0.0</version>
</dependency>
<!-- //logback(logback)-->
<dependency>
<groupId>org.codehaus.janino</groupId>
<artifactId>janino</artifactId>
<version>3.0.6</version>
</dependency>
logback.xml에 아래부분을 추가해 준다.
<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<evaluator>
<expression>message.contains("NOT_SQL_LOG")</expression>
</evaluator>
<OnMismatch>NEUTRAL</OnMismatch>
<OnMatch>DENY</OnMatch>
</filter>
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="LOG_PATH" value="logs" />
<property name="LOG_FILE_NAME" value="log" />
<appender name="FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/${LOG_FILE_NAME}.log</file>
<encoder>
<!-- <charset>UTF-8</charset> <pattern>%d{[yyyy.MM.dd HH:mm:ss]} [%-35.35c{1}:%line]
%-5p %m%n</pattern> -->
<pattern>
%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
</pattern>
</encoder>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/${LOG_FILE_NAME}.%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>50MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>7</maxHistory>
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
</appender>
<!-- <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout"> <charset>UTF-8</charset>
<Pattern>%d{[yyyy.MM.dd HH:mm:ss]} [%-35.35c{1}:%line] %-5p %m%n</Pattern>
</layout> </appender> -->
<appender name="STDOUT"
class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<evaluator>
<expression>message.contains("NOT_SQL_LOG")</expression>
</evaluator>
<OnMismatch>NEUTRAL</OnMismatch>
<OnMatch>DENY</OnMatch>
</filter>
<encoder>
<pattern>%d{HH:mm:ss.SSS}[%thread] %-5level %logger{36} - %msg%n
</pattern>
</encoder>
</appender>
<logger name="jdbc.sqltiming" level="INFO" />
<logger name="jdbc.audit" level="WARN" />
<logger name="jdbc.resultset" level="WARN" />
<logger name="jdbc.resultsettable" level="INFO" />
<logger name="jdbc.sqlonly" level="WARN" />
<logger name="jdbc.connection" level="WARN" />
<root level="DEBUG">
<appender-ref ref="FILE" />
<appender-ref ref="STDOUT" />
</root>
<typeAliases></typeAliases>
</configuration>
mybatis sql xml에 위의 --NOT_SQL_LOG를 추가하면 콘솔에 로그가 출력되지 않는다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="egovframework.basic.log.service.impl.WebLogMapper">
<!-- 로그 출력 안됨 -->
<insert id="test1" parameterType="Map">
-- NOT_SQL_LOG
INSERT INTO ${schemaNm}.log
(
session_id
, ip
)
VALUES
(
#{sessionId}
, #{ip}
)
</insert>
<!-- 로그 출력 -->
<insert id="test2" parameterType="Map">
INSERT INTO ${schemaNm}.log
(
session_id
, ip
)
VALUES
(
#{sessionId}
, #{ip}
)
</insert>
</mapper>
728x90
'Framework > Spring' 카테고리의 다른 글
Spring boot jstl (0) | 2023.11.08 |
---|---|
net.sf.json-lib pom.xml에 등록시 에러 (0) | 2023.08.23 |
Interceptor에서 request url에 jsp 경로로 여러번 호출될때 (0) | 2023.08.04 |
톰캣 9.0 한글 깨짐 및 logback 한글깨짐 (0) | 2023.07.26 |
spring 전자 정부 파일이미지 (0) | 2023.04.01 |