@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 |
---|