1. 프로젝트 구조

 

 

2. 설정 파일 application.properties

 배포시에는 '-Dspring.profiles.active=SERVICE' 이렇게 배포하기 때문에 프로퍼티 파일 변경은 필요없음.

 참조 : https://developer-ljo.tistory.com/26

##THYMELEAF
spring.thymeleaf.prefix=classpath:templates/
spring.thymeleaf.check-template-location=true
spring.thymeleaf.suffix=.html
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.mode=HTML
spring.thymeleaf.cache=false
spring.thymeleaf.order=0

# PROFILE 설정 ##### LOCAL : 로컬 , DEV : 개발 , SERVICE : 운영
spring.profiles.active=LOCAL
#spring.profiles.active=DEV
#spring.profiles.active=SERVICE

# FILE UPLOAD #####
spring.http.multipart.max-file-size=10MB
spring.http.multipart.max-request-size=10MB

mybatis.type-aliases-package=com.solution.framework.util.mapper
mybatis.mapper-locations=classpath:mappers/com/solution/**/dao/*.xml
mybatis.configuration.map-underscore-to-camel-case=true
mybatis.configuration.call-setters-on-nulls=true

server.error.include-exception=false
server.error.include-stacktrace=never

spring.main.allow-bean-definition-overriding=true

server.servlet.session.persistent=false

3. logback.xml

 1)로컬 : 콘솔 출력

 2)개발서버 : 파일로 출력, 로그 3일 보관

 3)운영서버 : 파일로 출력, 로그 30일 보관 

 예전에는 톰캣으로 날짜별 로그를 별도로 작업하고 지우는 작업을 했어야 했는데 이렇게 설정이 쉬워졌다...

 톰캣 날짜별 로그 참조 : https://developer-ljo.tistory.com/5

<?xml version="1.0" encoding="UTF-8"?>
<!-- 300초마다 설정 파일의 변경을 확인한다. 파일이 변경되면 다시 로딩 -->
<configuration scan="true" scanPeriod="300 seconds">
	<!-- 외부 설정파일. -->
    <property resource="application.properties"/>
	<!-- 운영 로그 -->
	<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>/data/apps/adWeb/logs/adWeb.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!-- 로그 경로 -->
			<fileNamePattern>/data/apps/adWeb/logs/adWeb-%d{yyyy-MM-dd}.log</fileNamePattern>
			<!-- 일자별 로그 파일 보관 일수 -->
			<maxHistory>30</maxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>
				%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(%-5level) [ %cyan(%logger{20}) ] : %msg%n
			</pattern>
		</encoder>
    </appender>

	<!-- 개발 로그 -->
	<appender name="DEV_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>/home/wise/adweb/logs/adWeb.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!-- 로그 경로 -->
			<fileNamePattern>/home/wise/adweb/logs/adWeb-%d{yyyy-MM-dd}.log</fileNamePattern>
			<!-- 일자별 로그 파일 보관 일수 -->
			<maxHistory>3</maxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>
				%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(%-5level) [ %cyan(%logger) ] : %msg%n
			</pattern>
		</encoder>
    </appender>

	<!-- 로컬 로그 -->
	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<pattern>
				%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(%-5level) [ %cyan(%logger) ] : %msg%n
			</pattern>
		</encoder>
	</appender>

	<logger name="org.springframework" level="INFO" />
	<logger name="jdbc.sqltiming" level="INFO" />
	<logger name="jdbc.sqlonly" level="DEBUG" />
	<logger name="jdbc.resultsettable" level="DEBUG" />
	<logger name="org.apache.http.impl.conn" level="OFF" />
	<logger name="jdbc" level="OFF"/>

	<!-- 설정 파일의 active에 따라 로그 출력 -->
	<springProfile name="SERVICE">
		<root level="INFO">
			<appender-ref ref="FILE"/>
		</root>
	</springProfile>
	<springProfile name="DEV">
		<root level="DEBUG">
			<appender-ref ref="DEV_FILE"/>
		</root>
	</springProfile>
	<springProfile name="LOCAL">
		<root level="DEBUG">
			<appender-ref ref="STDOUT"/>
		</root>
	</springProfile>

</configuration>

※로그레벨 참조

 

 

1. TRACE : 5

2. DEBUG : 4

3. INFO : 3

4. WARN : 2

5. ERROR : 1

 

광고 : https://play.google.com/store/apps/details?id=com.ljo.blocktube

 

이게불낙이야! - 광고차단 - Google Play 앱

동영상 광고 및 배너 광고를 제거합니다.

play.google.com

 

'개발 > java&kotlin' 카테고리의 다른 글

스프링부트에서 Scheduling 사용하기  (0) 2020.11.25
spring cloud openfeign 사용하기  (0) 2020.11.24
java 로 캡챠 구현  (0) 2020.03.26
WebBindingInitializer 활용  (0) 2018.07.12
spring 크로스 도메인 처리  (0) 2018.07.12