2021.08.20 TIL

새롭게 배운 것 Done

운동

독서

알고리즘

코딩

Logging

Log Level

logback 설정

private static final Logger logger = LoggerFactory.getLogger(OrderTester.class);
  1. logback-test.xml
  2. 없으면 logback.groovy
  3. 없으면 logback.xml
  4. 모두 없으면 기본 설정 전략 -> BasicConfiguration
<configuration>
    <property name="LOG_PATTERN" values="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>
    <timestamp key="bySecond" datePattern="yyyyMMdd'T'HHmmss"/>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <appender name="FILE" class="ch.qos.logback.core.ConsoleAppender">
        <file>logs/kdt_${bySecond}.log</file>
        <append>false</append>
        <encoder>
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <logger name="org.prgrms.kdt" level="debug">
        <appender-ref ref="FILE"/>
    </logger>

    <root level="warn">
        <appender-ref ref="STDOUT"/>
    </root>
</configuration>
    <appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--        <file>logs/access.log</file>-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>logs/access-%d{yyyy-MM-dd}.log</fileNamePattern>
        </rollingPolicy>
    <conversionRule
        conversionWord="clr"
        conversionClass="org.springframework.boot.logging.logback.ColorConverter" />

    <property name="CONSOLE_LOG_PATTERN" values="%clr(%d{HH:mm:ss.SSS}){cyan} [%thread] %-5level %logger{36} - %msg%n"/>
    <property name="FILE_LOG_PATTERN" values="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>

SpringBoot

Spring Boot 외부에서 설정 가져오는 순서

  1. 홈 디렉터리 (개발 도구가 활성화된 경우 ~/.spring-boot-devtools.properties)의 개발 도구 전역 설정 프로퍼티
  2. 테스트의 @TestPropertySource 어노테이션
  3. 테스트의 properties 애트리뷰트 @SpringBootTest와 어플리케이션 특정 부분을 테스트하기 위한 테스트 어노테이션에서 사용 가능
  4. 커맨드라인 인자
  5. SPRING_APPLICATION_JSON의 프로퍼티(환경 변수나 시스템 프로퍼티에 삽입된 인라인 JSON)
  6. ServletConfig 초기 파라미터
  7. ServletContext 초기 파라미터
  8. java:comp/env의 JNDI 애트리뷰트
  9. Java 시스템 프로퍼티(System.getProperties())
  10. OS 환경변수
  11. random.* 에 프로퍼티를 가진 RandomValuePropertySource
  12. 패키지된 jar 외부의 프로파일 지정 애플리케이션 프로퍼티(application-{profile}.properties와 YAML 형식)
  13. 패키지된 jar 내부의 프로파일 지정 애플리케이션 프로퍼티(application-{profile}.properties와 YAML 형식)
  14. 패키지된 jar 외부의 애플리케이션 프로퍼티(application-{profile}.properties와 YAML 형식)
  15. 패키지된 jar 내부의 애플리케이션 프로퍼티(application-{profile}.properties와 YAML 형식)
  16. @Configuration 클래스의 @PropertySource 어노테이션
  17. (SpringApplication.setDefaultProperties에 의해 명시된) 기본 프로퍼티

실행 가능한 jar 파일 생성하기

mvn clean package spring-boot:repackage java -jar target/~.jar

Intellij - profile

깨달은 점 FEELING