로거를 사용하는 이유

4093 단어

로거



Java에서 로깅은 개발자가 오류를 추적하는 데 도움이 되는 중요한 기능입니다. Java는 로깅 접근 방식과 함께 제공되는 프로그래밍 언어입니다. Java 1.4 버전에서 도입된 Logging API를 제공합니다. 로그 파일을 캡처하는 기능을 제공합니다.


로거의 구성 요소



로거 — 레코더.
핸들러 또는 어펜더 — 로그를 보낼 위치(콘솔, 파일 등)
포맷터 또는 레이아웃 — 로그를 표시하는 방법.


다른 로거


  • Log4j: Apache Log4j는 오픈 소스 Java 기반 로깅 유틸리티입니다.
  • SLF4J: SLF4J(Simple Logging Facade for Java)의 약자입니다. Log4j, Logback 및 java.util.logging과 같은 여러 로깅 프레임워크를 위한 추상화 계층입니다.
  • Logback: Log4j 버전 2가 출시되기 전에 Log4j 버전 1의 후속 버전으로 설계된 오픈 소스 프로젝트입니다.
  • tinylog(tinylog): 경량의 오픈 소스 로거입니다.



  • 왜 로거인가?



    애플리케이션/프레임워크를 구축하는 동안 종종 디버깅해야 하는 오류에 직면하게 됩니다. 따라서 로그의 도움으로 오류 및 비정상적인 상황 기록이 있는 앱 또는 프레임워크 내에서 일어나는 일에 대한 정보를 쉽게 얻을 수 있습니다. 이제 Java에서 System.out.print() 문을 사용하지 않는 이유에 대해 생각할 수 있습니다. 음, 이 문장의 문제는 로그 메시지가 콘솔에만 출력된다는 것입니다. 따라서 콘솔을 닫으면 자동으로 모든 로그가 손실됩니다. 따라서 단일 스레드 환경이므로 로그가 영구적으로 저장되지 않고 하나씩 표시됩니다.
    이 게시물에서는 데모를 위해 Logback 로거 라이브러리를 사용합니다.


    로거 레벨 설명:






    메이븐 종속성:




    <!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.11</version>
        <scope>test</scope>
    </dependency>
    



    logback-test.xml(컨벤션은 리소스 폴더에 보관하는 것입니다)




    <configuration>
    
        <!-- Console Appender -->
        <appender name="console-appender" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
            </encoder>
        </appender>
    
    
        <!-- File Appender -->
        <appender name="file-appender" class="ch.qos.logback.core.FileAppender">
            <encoder>
                <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
            </encoder>
            <file>trace.log</file>
            <append>false</append>
        </appender>
    
        <root level="ALL">
            <appender-ref ref="console-appender" />
            <appender-ref ref="file-appender" />
        </root>
    
    </configuration>
    



    MainClass.java




    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    public class MainClass {
        public static void main(String[] args) {
            // initializing logger
            Logger logger = LoggerFactory.getLogger(MainClass.class);
            logger.trace("trace-log");
            logger.debug("debug-log");
            logger.info("info-log");
            logger.warn("warn-log");
            logger.error("error-log");
        }
    }
    



    우리의 경우에는 2개의 Appender를 사용하고 있습니다.
    Console Appender : 로그를 콘솔에 출력합니다.
    File Appender : 로그를 파일로 전송합니다.
    2개의 다른 어펜더와 로그 형식을 언급한 logback-test.xml을 참조하십시오.

    콘솔 인쇄:




    21:21:32.722 [main] TRACE MainClass - trace-log
    21:21:32.722 [main] DEBUG MainClass - debug-log
    21:21:32.722 [main] INFO  MainClass - info-log
    21:21:32.727 [main] WARN  MainClass - warn-log
    21:21:32.727 [main] ERROR MainClass - error-log
    


    trace.log




    21:21:32.722 [main] TRACE MainClass - trace-log
    21:21:32.722 [main] DEBUG MainClass - debug-log
    21:21:32.722 [main] INFO  MainClass - info-log
    21:21:32.727 [main] WARN  MainClass - warn-log
    21:21:32.727 [main] ERROR MainClass - error-log
    

    좋은 웹페이지 즐겨찾기