Java의 로거 란 무엇이며 왜 사용합니까?



Logger in Java에 대한이 기사는 프로젝트를 생성하는 동안 솔루션을 로깅하는 데 사용되는 Java 로깅 API에 대한 포괄적 인 가이드입니다.

로깅은 오류를 추적하기 위해 개발자가 고려해야하는 중요한 기능입니다. 가장 널리 사용되는 프로그래밍 언어 중 하나 인은 기본 로깅 API를 제공하여 로깅에 대한 사용자 정의 가능한 접근 방식을 제공합니다. 이 글에서는 Logger in Java에 대해 이 기능을 사용하여 Java에서 확장 가능한 로깅을 활성화 할 수 있습니다.

이 기사에서는 다음 주제를 다룹니다.





    1. 로깅 필요
    2. 로깅 구성 요소
    3. 로거 란?
    4. 어 펜더 또는 핸들러
    5. 레이아웃 또는 포맷터

이전에 Java 로깅에 대해 자세히 알아보고 로깅의 필요성을 이해해 보겠습니다.

로깅 필요

응용 프로그램을 빌드하는 동안 종종 디버깅해야하는 오류에 직면합니다. 따라서 로그의 도움으로 오류 및 비정상적인 상황에 대한 기록으로 애플리케이션에서 발생하는 일에 대한 정보를 쉽게 얻을 수 있습니다. 이제 System.out.print () 문을 사용하지 않는 이유는 다음과 같습니다. . 음,이 문장의 문제점은 로그 메시지가 콘솔에만 인쇄된다는 것입니다. 따라서 콘솔을 닫으면 자동으로 모든 로그가 손실됩니다. 따라서 로그는 영구적으로 저장되지 않고 단일 스레드 환경이므로 하나씩 표시됩니다.



해시 맵과 해시 테이블의 차이점은 무엇입니까

이러한 문제를 방지하기 위해 Java 로그인은API를 통해 제공되는java.util.logging패키지 및org.apache.log4j. *꾸러미.

로깅 구성 요소

Java 로깅 구성 요소는 개발자가 로그를 생성하고 각 대상에 로그를 전달하며 적절한 형식을 유지하도록 도와줍니다. 다음은 세 가지 구성 요소입니다.

  • 로거 – 로그 레코드를 캡처하여 해당 Appender에 전달합니다.
  • 어 펜더 또는 핸들러 – 로그 이벤트를 대상에 기록하는 역할을합니다. 어 펜더는 출력을 보내기 전에 레이아웃의 도움으로 이벤트의 형식을 지정합니다.
  • 레이아웃 또는 포맷터 – 데이터가 로그 항목에 표시 될 때 어떻게 보이는지 결정합니다.

세 가지 구성 요소의 작동에 대해서는 아래 이미지를 참조 할 수 있습니다.



로깅 구성 요소-Logger in Java-Edureka

애플리케이션이 로깅 호출을 수행하면 Logger 구성 요소는 이벤트를 LogRecord에 기록하고 해당 Appender에 전달합니다. 그런 다음 필요한 형식에 따라 레이아웃을 사용하여 레코드를 형식화했습니다. 이 외에도 둘 이상의 필터를 사용하여 이벤트에 사용할 어 펜더를 지정할 수도 있습니다.

이제 Java에서 로거가 무엇인지 깊이 이해하겠습니다.

Java의 Logger 란 무엇입니까?

Java의 로거는 로그 이벤트를 트리거하는 객체입니다. 애플리케이션 코드에서 생성되고 호출되어 Appender 인 다음 구성 요소에 전달하기 전에 로그 이벤트를 생성합니다. 단일 클래스에서 여러 로거를 사용하여 다양한 이벤트에 응답하거나 계층 구조에서 로거를 사용할 수 있습니다. 일반적으로 점으로 구분 된 계층 적 네임 스페이스를 사용하여 이름이 지정됩니다. 또한 모든 로거 이름은 로깅 된 구성 요소의 클래스 또는 패키지 이름을 기반으로해야합니다.

이 외에도 각 로거는 가장 가까운 기존 조상을 추적합니다. 로그 네임 스페이스와 연관된 '레벨'도 있습니다. 이 기사의 후반부에서 Logger에 대해 논의 할 것이지만 그 전에 Java로 Logger를 생성하는 방법을 보여 드리겠습니다.

새 로거 생성

Java로 새 Logger를 만드는 과정은 매우 간단합니다. 당신은 사용해야합니다Logger.getLogger ()방법. 그만큼getLogger () 로거의 이름을 식별하고 문자열을 매개 변수로 사용합니다. 따라서 Logger가 이미 존재하면 해당 Logger가 반환되고 그렇지 않으면 새 Logger가 생성됩니다.

통사론:

정적 로거 로거 = Logger.getLogger (SampleClass.class.getName ())

여기서 SampleClass는 Logger 객체를 가져 오는 클래스 이름입니다.

예:

공용 클래스 Customer {private static final Logger LOGGER = Logger.getLogger (Customer.class) public void getCustomerDetails () {}}

이제 Java로 로거를 만드는 방법을 설명 했으므로 로깅에서 사용할 수있는 다양한 수준을 살펴 보겠습니다.

로그 수준

로그 수준은 심각도 또는 애플리케이션 안정성에 대한 영향을 기준으로 로그를 분류하는 데 사용됩니다. 그만큼org.apache.log4j. *패키지 및java.util.logging둘 다 서로 다른 수준의 로깅을 제공합니다. 각각 하나씩 살펴 보겠습니다.

org.apache.log4j. *패키지는 내림차순으로 다음 레벨을 제공합니다.

  • 치명적인
  • 오류
  • 경고
  • 정보
  • 디버그

java.util.logging패키지는 내림차순으로 다음 레벨을 제공합니다.

  • 심각 (최고 수준)
  • 경고
  • 정보
  • 구성
  • 좋아
  • 파이 너
  • FINEST (최저 레벨)

이 외에도 위의 패키지는 두 가지 추가 레벨을 제공합니다.모두떨어져서모든 메시지를 로깅하고 각각 로깅을 비활성화하는 데 사용됩니다.

다음을 사용하여 Java에 로그인하는 예org.apache.log4j. *꾸러미:

import org.apache.log4j.Logger public class Customer {static Logger logger = Logger.getLogger (Customer.class) public static void main (String [] args) {logger.error ( 'ERROR') logger.warn ( 'WARNING' ) logger.fatal ( 'FATAL') logger.debug ( 'DEBUG') logger.info ( 'INFO') System.out.println ( '최종 출력')}}

따라서 출력이루트 로거를 WARN 수준으로 log4j.properties 파일의 경우 WARN보다 우선 순위가 높은 모든 오류 메시지가 아래와 같이 인쇄됩니다.

에서 setLevel () 메서드를 사용하여 수준을 설정할 수도 있습니다.java.util.logging패키지 :

logger.setLevel (Level.WARNING)

다음을 사용하여 Java에 로그인하는 예java.util.logging꾸러미:

package edureka import java.io.IOException import java.util.logging.Level import java.util.logging.Logger import java.util.logging. * class EdurekaLogger {private final static Logger LOGGER = Logger.getLogger (Logger.GLOBAL_LOGGER_NAME) public void sampleLog () {LOGGER.log (Level.WARNING, 'Welcome to Edureka!')}} public class Customer {public static void main (String [] args) {EdurekaLogger obj = new EdurekaLogger () obj.sampleLog () LogManager slg = LogManager.getLogManager () Logger log = slg.getLogger (Logger.GLOBAL_LOGGER_NAME) log.log (Level.WARNING, 'Hi! Welcome from Edureka')}}

응용 프로그램에서 로그인을 활성화하려면org.apache.log4j. *패키지 또는java.util.logging패키지의 경우 속성 파일을 구성해야합니다. Logger in Java에 대한이 기사의 다음으로 두 가지 속성 파일에 대해 논의하겠습니다.

Log4j 및 Java Util 패키지의 속성 파일

샘플 Log4j 속성 파일 :

# 루트 로거 옵션 활성화 log4j.rootLogger = INFO, file, stdout # 인쇄 파일에 어 펜더 첨부 log4j.appender.file = org.apache.log4j.RollingFileAppender log4j.appender.file.File = E : loglogging.log log4j.appender. file.MaxFileSize = 10MB log4j.appender.file.MaxBackupIndex = 5 log4j.appender.file.layout = org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern = % d {yyyy-MM-dd HH : mm : ss} % -5p % c {1} : % L-% m % n # 콘솔에 인쇄 할 어 펜더 첨부 log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = System.out log4j.appender.stdout.layout = org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern = % d {yyyy-MM-dd HH : mm : ss} % -5p % c {1} : % L -% m % n
  • Log4j 속성 파일은 프로젝트의 src 폴더에 생성됩니다.
  • log4j.appender.file = org.apache.log4j.RollingFileAppender-> 파일의 모든 로그를 인쇄합니다.
  • log4j.appender.stdout = org.apache.log4j.ConsoleAppender-> 콘솔의 모든 로그를 인쇄합니다.
  • log4j.appender.file.File = D : loglogging.log-> 로그 파일 위치 지정
  • log4j.appender.file.MaxFileSize = 10MB-> 로그 파일의 최대 크기는 10MB입니다.
  • log4j.appender.file.MaxBackupIndex = 5-> 백업 파일 수를 5 개로 제한
  • log4j.appender.file.layout = org.apache.log4j.PatternLayout-> 로그가 로그 파일에 인쇄되는 패턴을 지정합니다.
  • log4j.appender.file.layout.ConversionPattern = % d {yyyy-MM-dd HH : mm : ss} % -5p % c {1} : % L – % m % n-> 기본 변환 패턴을 설정합니다.

견본 Java Util 패키지 속성 파일

handlers = java.util.logging.ConsoleHandler .level = WARNING # 출력은 기본 디렉토리에 저장됩니다. java.util.logging.FileHandler.pattern = % h / java % u.log java.util.logging.FileHandler.limit = 60000 java.util.logging.FileHandler.count = 1 java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter # 로그 수준은 WARNING 이상으로 제한됩니다. java.util.logging.ConsoleHandler.level = 경고 java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

여기,

  • java.util.logging.FileHandler.pattern = % h / java % u.log-> 로그 파일이 기록됩니다.C : TEMPjava1.log
  • java.util.logging.FileHandler.limit = 50000->로거가 하나의 파일에 쓰는 최대 양 (바이트)입니다.
  • java.util.logging.FileHandler.count = 1-> 출력 파일 수 지정
  • java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter-> 형식화에 사용되는 포맷터를 언급합니다. 여기서 XML Formatter가 사용됩니다.
  • java.util.logging.ConsoleHandler.level = WARNING-> 기본 로그 수준을 WARNING으로 설정합니다.
  • java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter->지정합니다포맷터모두가 사용하는ConsoleHandler'에스. 여기서는 SimpleFormatter가 사용됩니다.

이벤트 로깅

이벤트를 로그인하려면 , 이벤트를 쉽게 정리할 수 있도록 레벨을 지정해야합니다. 레벨을 지정하고 메시지를 언급하려면 아래 방법을 사용할 수 있습니다.

방법 1 :

logger.log (Level.INFO, '메시지 표시')
여기서 레벨은 INFO이고 인쇄 할 메시지는 'Display Message'입니다.

방법 2 :

logger.info ( '메시지 표시')

Logger in Java가 INFO 수준 이상인 이벤트 만 기록하도록하려면 다음을 사용할 수 있습니다. setLevel () 위에서 논의한 방법.

이제 Java에서 Logger를 사용하는 방법에 대해 논의 했으므로 Log4j 아키텍처의 다음 구성 요소 인 Appenders에 대해 논의하겠습니다.

어 펜더 또는 핸들러

어 펜더 또는 핸들러는 로그 이벤트를 대상에 기록해야합니다. 각 로거는 여러 핸들러에 액세스 할 수 있으며 로거에서 로그 메시지를 수신합니다. 그런 다음 어 펜더는 포맷터 또는 레이아웃을 사용하여 이벤트의 형식을 지정하고 해당 대상으로 보냅니다.

어 펜더는 setLevel (Level.OFF) 메서드를 사용하여 끌 수 있습니다. 두 가지 가장 표준적인 핸들러java.util.logging패키지는 다음과 같습니다 :

  • FileHandler : 로그 메시지를 파일에 기록합니다.
  • ConsoleHandler : 콘솔에 로그 메시지를 기록합니다.

이해를 돕기 위해 속성 섹션에서 몇 가지 어 펜더를 설명했습니다.

레이아웃 또는 포맷터

포맷터의 레이아웃은 로그 이벤트의 데이터를 포맷하고 변환하는 데 사용됩니다.로깅 프레임 워크는 HTML, XML, Syslog, JSON, 일반 텍스트 및 기타 로그에 대한 레이아웃을 제공합니다.

  1. SimpleFormatter : 기본 정보가 담긴 문자 메시지를 생성합니다.
  2. XMLFormatter : 로그에 대한 XML 메시지 생성

이해를 돕기 위해 속성 섹션에서 몇 가지 레이아웃을 설명했습니다.이것으로 우리는 'Logger in Java'에 대한이 블로그의 끝으로 왔습니다. 이 기사에서 배운 내용이 명확하기를 바랍니다.

확인 전 세계에 걸쳐 250,000 명 이상의 만족 한 학습자 네트워크를 보유한 신뢰할 수있는 온라인 학습 회사 인 Edureka에서 작성했습니다. Edureka의 Java J2EE 및 SOA 교육 및 인증 과정은 Java 개발자가 되고자하는 학생과 전문가를 위해 설계되었습니다. 이 과정은 Java 프로그래밍을 시작하고 Hibernate & Spring과 같은 다양한 Java 프레임 워크와 함께 핵심 및 고급 Java 개념 모두에 대해 교육하도록 설계되었습니다.

질문이 있으십니까? 이 'Logger in Java'블로그의 댓글 섹션에 언급 해 주시면 가능한 한 빨리 연락 드리겠습니다.