본문 바로가기
SpringBoot/(책)스프링부트 시작하기

[springboot] 16. spring.profiles.active 설정파일 불러오기1 (.properties)

by 평범한kiki 2023. 5. 9.

* spring.profiles.active 설정파일 불러오기(*.properties)

 

1) /resources/application.properties

#기본적으로 공통되는 설정 정보

#불러올 설정정보
spring.profiles.active=dev

#log4jdbc적용후
spring.datasource.hikari.driver-class-name=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
#디비정보
spring.datasource.hikari.connection-test-query=SELECT 1
mybatis.configuration.map-underscore-to-camel-case=true

#파일업로드
spring.servlet.multipart.enabled=true
spring.servlet.multipart.location=/upload/images/
spring.servlet.multipart.max-request-size=30MB
spring.servlet.multipart.max-file-size=5MB


#resp api 필터 활성화
spring.mvc.hiddenmethod.filter.enabled=true

#thymeleaf 설정
spring.thymeleaf.check-template-location=true
spring.thymeleaf.prefix=classpath:/templates/

2) /resources/application-dev.properties

#로컬에서 쓸 정보
#디비정보
spring.datasource.hikari.jdbc-url=jdbc:log4jdbc:mysql://127.0.0.1:3306/web_db?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.hikari.username=test
spring.datasource.hikari.password=test123

#파일업로드 경로
part4.upload.path=C:/upload/images/

3) /resources/application-prod.properties

#실운영에서 쓸정보
#디비정보
spring.datasource.hikari.jdbc-url=jdbc:log4jdbc:mysql://127.0.0.1:3306/web_db?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.hikari.username=test
spring.datasource.hikari.password=test123

#파일업로드 경로
part4.upload.path=/upload/images/

* 설정한 profile에 따라 로그 설정하기

- /resources/logback-spring.xml

   properties에서 설정한  spring.profiles.active=dev

   아래부분 추가해서 개발과 운영에 로그 레벨 차이 준다

      <!--개발, dev는 프로파일 따라간다-->
         <springProfile name="dev">
      <!--운영, prod는 프로파일 따라간다-->
          <springProfile name="prod">

<?xml version="1.0" encoding="UTF-8" ?>
<configuration level="debug">
	
	    <!-- 변수 지정 -->
    <property name="LOG_DIR" value="/logs" />
    <property name="LOG_PATH_NAME" value="${LOG_DIR}/data.log" />
	
	<!--appender는 로그를 어디에 출력할지 결정(콘솔,파일기록,DB저장등)-->
	<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
	      <!--<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%kvp- %msg%n</pattern>-->
	      <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] [%F]%M\(%L\) : %m%n</pattern>
	    </encoder>
     </appender>
	<appender name="console-infolog" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
	      <pattern>%d %-5p %m%n</pattern>
	    </encoder>
     </appender>  
	   <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
	        <File>${LOG_PATH_NAME}</File>
	        <encoder>
	            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] [%F]%M\(%L\) : %m%n</pattern>
	        </encoder>
	         <!-- 일자별로 로그파일 적용하기 -->
	        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
	            <fileNamePattern>${LOG_PATH_NAME}.%d{yyyyMMdd}</fileNamePattern>
	            <maxFileSize>20MB</maxFileSize>
	            <maxHistory>50</maxHistory> <!-- 일자별 백업파일의 보관기간 -->
	            <totalSizeCap>1000MB</totalSizeCap>
	        </rollingPolicy>
	    </appender>
	    
     <!--로거는 로그를 출력하는 ㅇ소로 Level 속성을 통해서 출력할 로그의 레벨을 조절하여 appender에 전달-->
     <!-- debug레벨의 로그를 출력하는 형식은 console이라는 이름의 appender 사용 -->
     <!--개발, dev는 프로파일 따라간다-->
     <springProfile name="dev">
	     <logger name="board" level="DEBUG" appender-ref="console"/> 
	     <logger name="jdbc.sqlonly" level="INFO" appender-ref="console-infolog"/> 
	     <logger name="jdbc.resultsettable" level="INFO" appender-ref="console-infolog"/> 
     </springProfile>
     <!--운영, prod는 프로파일 따라간다-->
     <springProfile name="prod">
	     <logger name="board" level="ERROR" appender-ref="console"/> 
     </springProfile>     
     <!--루트로거-->
	  <root level="off">
	    <appender-ref ref="console" />
	    <appender-ref ref="FILE" />
	  </root>
</configuration>