본문 바로가기

Spring

스프링부트 로그파일 생성

 

@SpringBootApplication
public class PetClinicApplication {

   private static final Logger logger = LoggerFactory.getLogger(PetClinicApplication.class);


   public static void main(String[] args) {

      logger.info("log 확인!");

      SpringApplication.run(PetClinicApplication.class, args);
   }

}

① 로그파일 생성

 

① - ⒜ 

프로젝트 main > resources > application.properties 아래에

spring.profiles.active=local
logging.config=classpath:logback-${spring.profiles.active}.xml

해당 코드 추가. (프로젝트가 prod일 경우 파일 추가 생성)

 

① - ⒝ 프로젝트 main > resources파일내에

logback-local.xml 파일생성

 

 

<?xml version="1.0" encoding="UTF-8"?>
                           <!-- 30초마다  -->
<configuration scan="true" scanPeriod="30 seconds">

   <!--로그 파일 저장 위치 -->
   <springProfile name="local">
      <property name="LOGS_PATH" value="./log" />
   </springProfile>

   <!--
      appender
      class > ConsoleAppender : 로그콘솔출력
      class > FileAppender  : 로그 지정파일에 기록
      class > RollingFileAppender   : FileAppender상속 (날짜, 용량 설정)
   -->
   <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
      <withJansi>true</withJansi>
      <encoder>
                  <!--%d{날짜 형식 포맷}                트레드 명          로그레벨    35만큼 이름 축약      -->
         <pattern>[%d{yyyy-MM-dd HH:mm:ss}:%-3relative][%thread] %green(%-5level) %logger{35} %cyan(%logger{15}) - %msg %n</pattern>
      </encoder>
   </appender>

   <appender name="DAILY_ROLLING_FILE_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
      <file>${LOGS_PATH}/logback.log</file>
      <encoder>
         <pattern>[%d{yyyy-MM-dd HH:mm:ss}:%-3relative][%thread] %-5level%logger{35} - %msg%n</pattern>
      </encoder>
      <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
         <fileNamePattern>${LOGS_PATH}/logback.%d{yyyy-MM-dd}.%i.log.gz
         </fileNamePattern>
         <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <!-- or whenever the file size reaches 100MB -->
            <maxFileSize>5MB</maxFileSize>
            <!-- kb, mb, gb -->
         </timeBasedFileNamingAndTriggeringPolicy>
         <maxHistory>30</maxHistory>
      </rollingPolicy>
   </appender>
            <!-- 현 프로젝트  -->
   <logger name="org.springframework.samples.petclinic" level="INFO">
      <appender-ref ref="DAILY_ROLLING_FILE_APPENDER" />
   </logger>

   <!-- log4jdbc 옵션 설정 -->
   <logger name="jdbc" level="OFF" /> <!-- 커넥션 open close 이벤트를 로그로 남긴다. -->
   <logger name="jdbc.connection" level="OFF" />

   <!-- SQL문만을 로그로 남기며, PreparedStatement일 경우 관련된 argument 값으로 대체된 SQL문이 보여진다. -->
   <logger name="jdbc.sqlonly" level="OFF" />

   <!-- SQL문과 해당 SQL을 실행시키는데 수행된 시간 정보(milliseconds)를 포함한다. -->
   <logger name="jdbc.sqltiming" level="DEBUG" />

   <!-- ResultSet을 제외한 모든 JDBC 호출 정보를 로그로 남긴다. 많은 양의 로그가 생성되므로 특별히 JDBC 문제를 추적해야 할 필요가 있는 경우를 제외하고는 사용을 권장하지 않는다. -->
   <logger name="jdbc.audit" level="OFF" />

   <!-- ResultSet을 포함한 모든 JDBC 호출 정보를 로그로 남기므로 매우 방대한 양의 로그가 생성된다. -->
   <logger name="jdbc.resultset" level="OFF" />

   <!-- SQL 결과 조회된 데이터의 table을 로그로 남긴다. -->
   <logger name="jdbc.resultsettable" level="OFF" />


   <!-- TRACE < DEBUG < INFO < WARN < ERROR   -->
   <root level="INFO">
      <appender-ref ref="STDOUT" />
   </root>
</configuration>

 

빌드 후

 

프로젝트 내에 로그파일 생성 확인

 

 

 

참고블로그

https://velog.io/@stella6767/logback-spring.xml-%EC%84%A4%EC%A0%95%EB%B0%A9%EB%B2%95

 

logback-spring.xml 설정방법

여러가지 logging 라이브러리가 있는데 Spring Boot 2.0에서는 사진과 같이 Java Util Logging, Log4j 2, Logback 을 기본적으로 사용할 수 있다. 다른 로깅 라이브러리로 갈아타기 편하기 위해 Facade 패턴을 적용

velog.io

 

'Spring' 카테고리의 다른 글

예제로 배우는 스프링 입문 (개정판)_백기선  (0) 2022.11.12