티스토리 뷰

로그기록(logback이용)

  • log4j를 기반으로 사용하는 로그프레임워크

  • Logger, Appender, Encoder

    • Logger : 로깅담당

    • Appender : 로그가 출력될 대상관리

    • Encore : 특정 형식으로 로그 메시지를 변환하는 역할

  1. 로그레벨

    • ERROR : 일반적인 에러가 발생하는 상황

    • WARN : 경고(에러는 아니지만 주의 필요)

    • INFO : 일반 정보

    • DEBUG : 일반정보를 좀 더 상세히 표현

    • TRACE : 경로추적

  2. 작성방법

    • API추가

    • 설정파일작성(logback.xml)

    • 적절한 곳에서 로그를 기록할 수 있도록 추가

dependency 등록

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.1.3</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <version>1.1.3</version>
</dependency>
  • src/main/resources 의 기본 파일을 제거하고 logback.xml 생성

< logback.xml >

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration>
<configuration debug="true">
	<!-- 변수 정의 -->
	<property name="LOG_DIR" value="/log" />
	<property name="LOG_PATH_NAME" value="${LOG_DIR}/data.log" />

	<!-- 콘솔에 정의 -->
	<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
		<!-- 콘솔에 출력되는 로그의 포맷을 정의 -->
		<layout class="ch.qos.logback.classic.PatternLayout">
			<pattern>%d{HH:mm:ss.SSS} [%thread] %-4level
				[%logger.%method:%line]-%msg %n</pattern>
		</layout>
	</appender>

	<!-- 로그파일로 기록 -->
	<appender name="LOGFILE"
		class="ch.qos.logback.core.rolling.RollingFileAppender">

		<!-- 기록될 파일명 -->
		<file>${LOG_PATH_NAME}</file>
		<!-- <file>/home/hadoop/logs/my-web.log</file> -->
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>my-web.%d{yyyy-MM-dd}.log</fileNamePattern>
			<!-- 30일지난 파일은 삭제한다. -->
			<maxHistory>30</maxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-4level
				[%logger.%method:%line]- %msg %n</pattern>
		</encoder>
	</appender>
	<!-- <logger name="org.springframework" level="INFO" /> <logger name="org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor" 
		level="DEBUG" /> <logger name="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" 
		level="WARN" /> -->

	<logger name="myweb" additivity="false">
		<level value="INFO" />
		<appender-ref ref="LOGFILE" />
		<appender-ref ref="CONSOLE" />
	</logger>
	<!-- <root level="DEBUG"> <appender-ref ref="CONSOLE" /> </root> -->
</configuration>
  • 컨트롤러, 인터셉터 등 원하는 곳에 로그 삽입

  • 컨트롤러 예시

@RequestMapping("/product/read.do")
public ModelAndView productRead(String prd_no, Model model,
			HttpServletRequest req) {
	logger.info("상품페이지에 접속함:" + prd_no+",접속한IP : "
			+req.getRemoteAddr()+",접속시간 : "+new Date().toString()
			+",요청구분:A요청,path:요청path분석하고 싶은 path나 각종 데이터");
	ModelAndView mav = new ModelAndView();
	ProductVO product = service.read(prd_no);
	mav.setViewName("product/read");
	mav.addObject("product", product);
	mav.addObject("prd_no", prd_no);
	return mav;
}
  • 실행 (c:/log/data.log 파일 생성)

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
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
글 보관함