logger.info와 logger.debug의 차이점


84

logger.debug과 의 차이점은 무엇입니까 logger.info?

언제 logger.debug인쇄됩니까?

답변:


30

이것은 로깅 구성에 따라 다릅니다. 기본값은 사용중인 프레임 워크에 따라 다릅니다. 아이디어는 나중에 구성 설정을 INFO에서 DEBUG로 변경하면 전체 응용 프로그램을 다시 컴파일하지 않고 인쇄되는 줄이 더 많거나 적다는 것을 볼 수 있다는 것입니다.

어떤 것을 사용할지 생각하면 어느 수준에서보고 싶은지 생각하는 것으로 귀결됩니다. 예를 들어 Log4J의 다른 레벨은 API, http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Level.html을 참조하십시오.


121

"log4j에 대한 간략한 소개" 라는 기사를 참조하십시오 . 여기에는 로그 수준에 대한 간단한 설명이 포함되어 있으며 실제로 사용하는 방법을 보여줍니다. 로그 수준의 기본 개념은 상황에 따라 로그에 포함되는 세부 정보의 양을 구성 할 수 있다는 것입니다. 예를 들어 문제를 해결하려는 경우 로그를 매우 자세하게 표시 할 수 있습니다. 프로덕션에서는 경고 및 오류 만보고 싶을 수 있습니다.

시스템의 각 구성 요소에 대한 로그 수준은 일반적으로 구성 파일의 매개 변수를 통해 제어되므로 쉽게 변경할 수 있습니다. 코드에는 수준이 다른 다양한 로깅 문이 포함됩니다. 에 응답 할 때 Exception, 당신은 호출 할 수 있습니다 Logger.error. 주어진 지점에서 변수 값을 인쇄하려면을 호출 할 수 있습니다 Logger.debug. 프로그램 내에서 구성 가능한 로깅 수준과 로깅 문을 결합하면 애플리케이션이 활동을 기록하는 방법을 완전히 제어 할 수 있습니다.

최소한 log4j의 경우 로그 수준의 순서는 다음과 같습니다.

DEBUG < INFO < WARN < ERROR < FATAL

다음은 로그 수준의 작동 방식을 보여주는 해당 문서의 간단한 예입니다.

   // get a logger instance named "com.foo"
   Logger logger = Logger.getLogger("com.foo");

   // Now set its level. Normally you do not need to set the
   // level of a logger programmatically. This is usually done
   // in configuration files.
   logger.setLevel(Level.INFO);

   Logger barlogger = Logger.getLogger("com.foo.Bar");

   // This request is enabled, because WARN >= INFO.
   logger.warn("Low fuel level.");

   // This request is disabled, because DEBUG < INFO.
   logger.debug("Starting search for nearest gas station.");

   // The logger instance barlogger, named "com.foo.Bar",
   // will inherit its level from the logger named
   // "com.foo" Thus, the following request is enabled
   // because INFO >= INFO.
   barlogger.info("Located nearest gas station.");

   // This request is disabled, because DEBUG < INFO.
   barlogger.debug("Exiting gas station search");

@momomo 답변 을 확인 하여Trace 로그 수준이 무엇인지 알 수 있습니다.
RBT

귀하의 예 If you want to print the value of a variable at any given point, you might call Logger.debug는 내가 DebugTrace레벨 사이의 혼란을 명확히하는 데 도움이되었습니다 . 감사합니다!
RBT

13

가능한 모든 레벨 세트에 대한 설명입니다.

ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF

9

기본적으로 로거 구성 방법에 따라 다릅니다. 일반적으로 개발 중에는 디버그 출력이 작성되었지만 프로덕션에서는 꺼져 있거나 특정 영역을 디버깅하는 동안 작성된 디버그 범주를 선택 했을 수 있습니다 .

다른 우선 순위를 갖는 요점은 합리적으로 세분화 된 방식으로 특정 구성 요소의 세부 정보 수준을 높이거나 낮출 수 있도록 허용하고 차이점을 확인하기 위해 로깅 구성 (코드가 아닌) 만 변경하면되는 것입니다.


2

이것은 매우 오래된 질문이지만 여기에 내 이해가 보이지 않으므로 2 센트를 더할 것입니다.

모든 레벨은 사용자 유형에 해당 / 매핑됩니다.

  • 디버그 : 개발자-수동 디버깅
  • trace : 자동 로깅 및 단계 추적기-3 단계 지원용
  • 정보 : 기술자 / 지원 레벨 1/2
  • 경고 : 기술자 / 사용자 오류 : 자동 경고 / 지원 수준 1
  • 위험 / 심각 : 설정에 따라 다름-로컬 IT

2
  1. INFO는 프로그램이 예상대로 작동하는 정보를 기록하는 데 사용됩니다.
  2. DEBUG는 프로그램이 예상대로 작동하지 않거나 예외가 발생한 경우 이유를 찾는 데 사용됩니다. 개발자의 이익을위한 것입니다.

0

logger.debug와 logger.info의 차이점은 무엇입니까?

이들은 이미 정의 된 일부 기본 수준 일뿐입니다. 원하는 경우 자신 만의 레벨을 정의 할 수 있습니다. 이러한 수준의 목적은 코드를 변경하지 않고 하나 이상의 수준을 활성화 / 비활성화하는 것입니다.

logger.debug가 인쇄 될 때 ??

구성에서 디버그 또는 더 높은 수준을 활성화 한 경우.


0

log4j 구성 파일에서 선택한 수준에 따라 다릅니다.

<Loggers>
        <Root level="info">
        ...

레벨이 "info"(기본값)이면 logger.debug(...)콘솔에 인쇄되지 않습니다. 그러나 레벨이 "디버그"이면 그렇게됩니다.

코드의 중요도 수준에 따라 다음 중 가장 정확한 수준을 사용해야합니다.

ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.