일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- namedQuery
- calendar
- 벌크연산
- springflow
- Hibernate
- Generic
- JQuery
- JPQL
- 스프링데이터흐름
- 프로젝트생성
- 페치조인
- JPA
- paging
- 엔티티직접사용
- joinfetch
- fullcalendar
- jQuery값전달
- jQuery값전송
- fetchjoin
- javascriptcalendar
- 제네릭
- jscalendar
- values()
- 대량쿼리
- 제너릭
- javaservlet
- jQueryUI
- 페이징
- LIST
- 자바서블릿
- Today
- Total
가자공부하러!
Logback 설정과 활용(Spring Boot 2.2.0) - 파일로 저장 본문
EHCache 설정 : https://dotheright.tistory.com/235
참고 : http://logback.qos.ch/documentation.html
참고 : https://taetaetae.github.io/2017/02/19/logback/
참고 : https://derekpark.tistory.com/53
참고 : https://jeong-pro.tistory.com/154
1. Logback?
1. Logback
> 자바 오픈소스 로깅 프레임워크
> Slf4j의 구현체이자 Spring Boot의 기본 로그 객체
2. 구성
> Appender
- ConsoleAppender : 콘솔에 로그를 찍는 방법
- FileAppender : 파일에 로그를 찍는 방법
- RollingFileAppender : 여러개의 파일을 순회하면서 로그를 찍는 방법
- SMTPAppender : 로그를 메일에 찍어 보내는 방법
- DBAppender : 데이터베이스에 로그를 찍는 방법
- 기타 : SocketAppender, SSLSocketAppender등
> Logger
- 로그 레벨 : ERROR < WARN < INFO < DEBUG < TRACE
- 로그 레벨 이하의 것은 다 찍는다.
- ex) INFO 레벨로 지정한 경우 ERROR, WARN, INFO 로그 찍힘
1. 기본 설정
1. 설정파일 작성
> pom.xml
- logback-classic(logback-core, logback-access등 포함)
- lombok을 사용한다면(@Slf4j) 아래 디펜던시는 없어도 된다.
<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<!-- <version>1.2.3</version> -->
<!-- <scope>test</scope> -->
</dependency>
> src/main/resources/logback-spring.xml
- 설정파일 찾는 순서 : logback.groovy -> logback-test.xml -> logback.xml
- Spring Boot에서는 logback.xml 대신 logback-spring.xml로 설정해주어야 함
2. 수행결과
3. 소스코드 - github
1. CommonController.java
package com.logback.common.controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Controller
public class CommonController {
Logger logger = LoggerFactory.getLogger(CommonController.class);
@RequestMapping(value = {"/", "/welcome"})
public String welcome() {
log.info("welcome()");
log.error("welcome error log");
logger.info("로그로그");
logger.error("로그에러로그에러");
return "welcome";
}
}
2. logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true" scan="true">
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<include resource="org/springframework/boot/logging/logback/console-appender.xml" />
<property name="LOG_DIR" value="/eCall/logs" />
<property name="SERVER_NAME" value="collection"/>
<property name="LOG_PATH_NAME" value="${LOG_DIR}/${SERVER_NAME}" />
<property name="FILE_NAME" value="collectionServer" />
<!-- FILE Appender -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- <file>${LOG_PATH_NAME}/${FILE_NAME}.log</file> -->
<file>Log/${LOG_PATH_NAME}/${FILE_NAME}.log</file>
<!-- 일자별 로그파일 저장 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH_NAME}/${FILE_NAME}_%d{yyyyMMdd}.log</fileNamePattern>
<!-- 일자별 로그파일 저장 기간 설정 -->
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%-5p] [%F]%M\(%L\) : %m%n</pattern>
</encoder>
</appender>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<!-- [2018-08-17] [15:24:21.355] [log level] [logName] [class.java line] [message] -->
<!-- 날짜 시간 로그레벨 로거이름 로그인클래스.java 몇번째줄 로그메세지 -->
<pattern>[%d{yyyy-MM-dd}] [%d{HH:mm:ss.SSS}] [%p] [%c{1}] [%F:%L [%m]%n</pattern>
</layout>
</appender>
<!-- ERROR레벨 이상만 출력 -->
<!-- <root level="INFO"> -->
<root level="ERROR">
<appender-ref ref="FILE"/>
<appender-ref ref="STDOUT"/>
</root>
</configuration>
3. application.yml
#Project RHYMES
server:
port: 19082
#JSP config
servlet:
jsp:
init-parameters:
development: true
#custume error page
error:
whitelabel:
enabled: true
spring:
#db config
datasource:
hikari:
jdbc-url: jdbc:mysql://localhost:3306/rhymes?characterEncoding=UTF-8&serverTimezone=UTC&zeroDateTimeBehavior=convertToNull
pool-name: hikari-cp
maximum-pool-size: 30
minimum-idle: 2
driver-class-name: com.mysql.cj.jdbc.Driver
username: mhj
password: mhj
jpa:
database: mysql
database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
open-in-view: false
properties:
hibernate:
show-sql: true
format_sql: true
generate-ddl: true
#jsp
mvc:
view:
prefix: /WEB-INF/views/
suffix: .jsp
servlet:
multipart:
max-file-size: 10MB
max-request-size: 10MB
enabled: true
file-size-threshold: 10MB
logging:
config: classpath:logback-spring.xml
file:
path: logs
level:
org.springframework: INFO
org:
#JPA Hibernate 로깅
hibernate:
SQL: DEBUG
type:
descriptor:
sql:
BasicBinder: TRACE
'공부 > Spring Boot' 카테고리의 다른 글
Spring Boot Hibernate 사용(JPA) (0) | 2019.10.28 |
---|---|
Mybatis <foreach> 예문 (0) | 2019.10.23 |
JSTL 캘린더 제작 (0) | 2019.10.03 |
Spring Boot + Gradle에서 만난 오류 친구들 (0) | 2019.09.30 |
Spring Security 활용 회원 관리 (5) - AJAX 403 처리(Spring Boot) (0) | 2019.09.26 |