본문 바로가기

[카페24] 톰캣 JSP 웹호스팅 환경에서 Spring Logback 설정하기

반응형

local에서는 기본적으로 console 로그를 통해서 로그를 확인한다.

하지만 서버에서는 console 로그로 관리하는 경우 catalina.out 파일에 적재되면 이를 관리하지 않으면 상당히 많은 용량을 차지하여 서버에 부하를 주게 될 것이다.

이에 따른 로컬과 서버의 logback 분기 처리가 필요하다.

 

카페 24 톰캣 JSP 웹호스팅의 경우 서버에서 여러 가지 제약을 받고 있어 환경 설정의 경우 거의 소스를 통해 수정해야 한다.

log를 찍는 것 또한 서버에서 제약을 받게 되는데 해당 글은 카페24 톰캣 JSP 웹 호스팅에서 로컬 환경과 서버 환경의 log 설정을 분기하는 과정을 담고 있다.

 

아래 예시는 Spring Boot 환경에서 logback을 분기하는 예시이다.

pom.xml
<profiles>
        <profile>
            <id>local</id>
            <properties>
                <environment>local</environment>
                <maven.test.skip>true</maven.test.skip>
                <spring.profiles.active>local</spring.profiles.active>
            </properties>
        </profile>
        <profile>
            <id>real</id>
            <properties>
                <environment>real</environment>
                <maven.test.skip>true</maven.test.skip>
                <spring.profiles.active>real</spring.profiles.active>
            </properties>
        </profile>
</profiles>
logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>

<!-- 로컬 환경 -->
    <springProfile name="local">
	    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
	        <!-- encoders are assigned the type
	             ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
	        <encoder>
	            <!-- 로그시간 + 패키지 및 클래스명 + 메소드명 + 메소드내에 로그위치 + 로깅메시지 -->
	            <pattern>%d{HH:mm:ss.SSS} %-5level %logger[%method:%line] - %msg%n</pattern>
	        </encoder>
	    </appender>

	    <root level="DEBUG">
            <appender-ref ref="CONSOLE" />
        </root>
    </springProfile>

<!-- 서버 환경 -->
    <springProfile name="real">
		<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
	        <!-- 파일 경로 설정 -->
	        <file>파일 경로</file>

	        <!-- 출력패턴 설정-->
	        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
	            <pattern>%d{HH:mm:ss.SSS} %-5level %logger[%method:%line] - %msg%n</pattern>
	        </encoder>

	        <!-- Rolling 정책 -->
	        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
	            <!-- .gz,.zip 등을 넣으면 자동 일자별 로그파일 압축 -->
	            <fileNamePattern>파일 경로.%d{yyyy-MM-dd}_%i.log</fileNamePattern>
	            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
	                <!-- 파일당 최고 용량 kb, mb, gb -->
	                <maxFileSize>50MB</maxFileSize>
	            </timeBasedFileNamingAndTriggeringPolicy>
	            <!-- 일자별 로그파일 최대 보관주기(~일), 해당 설정일 이상된 파일은 자동으로 제거-->
	            <maxHistory>7</maxHistory>
	            <!--<MinIndex>1</MinIndex>
	            <MaxIndex>10</MaxIndex>-->
	        </rollingPolicy>
	    </appender>
	    <root level="INFO">
            <appender-ref ref="FILE" />
        </root>
    </springProfile>

<!-- 공통 설정 -->
    <springProfile name="default">
        <root level="INFO">
            <appender-ref ref="CONSOLE" />
        </root>
    </springProfile>
    
</configuration>

 

톰캣 JSP 웹호스팅에서는 실행 인자를 마음대로 바꾸기 어렵지만 폴더 내에 파일 생성은 가능하다.

/tomcat/bin/ 폴더 내에 다음 setenv.sh 파일을 생성하자. (윈도우인 경우에는 setenv.bat)

setenv.sh 파일에 다음 내용을 기입하자.

setenv.sh
export SPRING_PROFILES_ACTIVE=real

 

위의 환경으로 세팅을 해두면 톰캣이 시작될 때 real 프로필 기준으로 실행하게 된다.

톰캣 재시작
/카페24아이디/tomcat/bin/shutdown.sh
/카페24아이디/tomcat/bin/startup.sh

 

재시작 후 테스트를 해보면 아래와 같이 정상적으로 지정한 로그 파일이 생성되는 것을 확인할 수 있다.

 

반응형