[Java]Log4j 사용해 로그기록하기

seeun·2021년 7월 28일
0

Java

목록 보기
2/3
post-thumbnail

📝Log4j란?

  • 프로그램을 작성하는 도중에 로그를 남기기 위해 사용되는 자바 기반 로깅 유틸리티
  • 디버그용 도구로 주로 사용됨


📝Log4j 설정하기

아파치에서 다운받아서 설정하는 법과 Maven을 이용하는 방법이 있다. 이클립스 내부에는 이미 Maven 기능이 적용되어 있기 때문에 이클립스 사용자는 사용만 하면됨!

1. Apache

다운로드 링크

2. Maven

Maven Repository

  • 개발시에 필요한 library들을 원격 저장소로부터 설정 정보만으로 자동으로 내 로컬 시스템에 다운로드 하게 하는 SW

💡 Maven 사용법
1. 필요한 library 파악하기
2. maven project로 변환해서 설정 파일 편집하기
3. pom.xml이라는 파일에 library 정보를 설정
4. 다운로드 받은 library 사용



📌log4j 다운받기

1. 프로젝트에서 오른쪽 클릭하고 Convert to Maven Project클릭해서 maven project로 변환

2. 변환하면 pom.xml 생성

3. add에서 log4j : 1.2.14 검색해서 다운받기

검색 안될 경우 참고



📌pom.xml파일 수정

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>playdata</groupId>
  <artifactId>step04_maven</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <build>
    <sourceDirectory>src</sourceDirectory>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.7.0</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
  
  
  <dependencies>
  	<dependency>
  		<groupId>log4j</groupId>
  		<artifactId>log4j</artifactId>
  		<version>1.2.14</version>
  	</dependency>
  </dependencies>
</project>



📝Log 출력해보기


📌log4j.properties 생성 및 설정

# Set root category priority to INFO and its only appender to CONSOLE.
log4j.rootCategory=info, CONSOLE, daily

# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d %5p (%F:%L) - %m%n

log4j.appender.daily=org.apache.log4j.DailyRollingFileAppender
log4j.appender.daily.File=C:\\20210628_lab\\88.log\\playdata.log
log4j.appender.daily.DatePattern='.'yyyy-MM-dd
log4j.appender.daily.layout=org.apache.log4j.PatternLayout
log4j.appender.daily.layout.ConversionPattern=%d %5p (%F:%L) - %m%n
#log4j.appender.daily.layout.ConversionPattern=- %F %m%n
  • #Set root category priority to INFO and its only appender to CONSOLE: info 레벨로 로그기록을 하겠다는 설정

    log4j의 최근 버전에 의하면 높은 등급에서 낮은 등급으로의 6개 로그 레벨을 가지고 있다. 설정 파일에 대상별(자바에서는 패키지)로 레벨을 지정이 가능하고 그 등급 이상의 로그만 저장하는 방식
    trace < debug < info < warn < error
    ex) info 설정시 info 이상의 모든 레벨 실행

  • CONSOLE : 사용자들이 별칭으로 선언(가변적), 서버 실행창을 지정, 출력 포멧만 필요
  • File : 로그를 기록할파일의 위치와 파일명 지정

📌log4j 사용해 코드 작성

package log4jtest;

import org.apache.log4j.Logger;

public class LogTest {

	//메소드의 parameter로 package명.class명을 적용해서 해당 class에서 로그 기록
	static Logger logger = Logger.getLogger("log4jtest.LogTest");
	
	// id를 검증하는 로직의 메소드라 가정 - id가 master가 아니라면 warn 메세지 
	//id가 master라면 관리자에게 "master로그인 했다"라는 메세지
	public static void loginCheck(String id) {
		if(id.equals("master")){  
			logger.trace("trace - master 로그인");	
			logger.debug("debug - master 로그인");	
			logger.info("info - master 로그인");	
			logger.warn("warn - master 로그인");	
			logger.error("error - master 로그인");		
		}else {
			logger.warn("warn - user가 잘못 입력");
		}
	}

	public static void main(String[] args) {
		loginCheck("master");
	}
}
  • 콘솔창에 로그기록


  • 파일에 로그기록
    지정한 파일위치와 파일명으로 기록된 것 확인
profile
🤹‍♂️개발 기록 노트

0개의 댓글