본문 바로가기
WEB,WAS/TOMCAT

톰캣에서 log4j 사용과 java.util.logging와 차이점

by Rainbound-IT 2023. 8. 9.
반응형

목차

     

    log4j란?

     

    • log4j는 자바 언어용 로깅 프레임워크로, 애플리케이션에서 로그 메시지를 관리하고 출력하는 데 사용됩니다.
    • 로그 레벨, 로그 메시지 형식, 로그 파일 관리 등의 다양한 설정을 지원하여 애플리케이션 로깅을 효과적으로 관리할 수 있습니다.
    • 로그 메시지를 콘솔, 파일, 데이터베이스, 원격 서버 등 다양한 대상으로 출력할 수 있습니다.
    • 다양한 로그 레벨로서 debug, info, warn, error, fatal 등을 제공하여 로그 메시지의 중요도를 표현할 수 있습니다.

     

    java.util.logging 차이점

    1. java.util.logging (JUL):
      • java.util.logging은 Java 언어의 표준 로깅 API로 제공됩니다. JDK에 기본적으로 포함되어 있어 별도의 라이브러리를 추가로 사용할 필요가 없습니다.
      • JDK의 내장된 로깅 시스템으로, Java 표준 라이브러리를 사용하는 애플리케이션에 통합하기 용이합니다.
      • 기본적인 로그 기능을 제공하며, 로그 레벨(SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST)과 로그 메시지 형식을 지원합니다.
      • 설정 가능하지만 비교적 유연성이 떨어져서 고급 로깅 기능이 필요한 경우에는 제한될 수 있습니다.
    2. log4j:
      • log4j는 Apache Software Foundation에서 개발한 로깅 프레임워크로, 더 풍부한 로깅 기능을 제공합니다.
      • 다양한 로그 레벨(DEBUG, INFO, WARN, ERROR, FATAL)을 지원하며, 세밀한 로그 레벨 관리가 가능합니다.
      • 다양한 로그 출력 형식과 대상 (콘솔, 파일, 데이터베이스, 원격 서버 등)을 지원하여 설정 가능합니다.
      • 로그 메시지의 형식을 유연하게 설정할 수 있으며, 로깅의 필요한 모든 기능을 다양한 Appender, Layout 등을 통해 구성 가능합니다.
      • 로그 설정을 XML 파일 등으로 관리할 수 있어 환경 변경 없이 로깅 설정을 수정할 수 있습니다.

    주로 다음과 같은 차이점을 갖습니다:

    • java.util.logging은 Java 표준 라이브러리에 내장되어 있어 추가적인 라이브러리를 사용할 필요가 없습니다. 반면 log4j는 외부 라이브러리로 추가되어야 합니다.
    • log4j는 풍부한 기능과 설정 가능성을 가지며, 유연하게 로깅을 구성할 수 있습니다. 반면 java.util.logging은 더 간단한 설정과 로깅 기능을 제공합니다.
    • log4j는 커스텀 Appender와 Layout을 구현하여 로그를 다양한 대상과 형식으로 출력하는 것이 가능합니다.

    기능이 log4j가 더 좋기 때문에 웬만하면 log4j를 사용합니다.

     

     

    톰캣에서 log4j 사용

    1. log4j.properties다음 내용으로 호출되는 파일을 생성 하고 다음 위치에 저장합니다.$CATALINA_BASE/lib
    log4j.rootLogger = INFO, CATALINA
    
    # Define all the appenders
    log4j.appender.CATALINA = org.apache.log4j.DailyRollingFileAppender
    log4j.appender.CATALINA.File = ${catalina.base}/logs/catalina
    log4j.appender.CATALINA.Append = true
    log4j.appender.CATALINA.Encoding = UTF-8
    # Roll-over the log once per day
    log4j.appender.CATALINA.DatePattern = '.'yyyy-MM-dd'.log'
    log4j.appender.CATALINA.layout = org.apache.log4j.PatternLayout
    log4j.appender.CATALINA.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
    
    log4j.appender.LOCALHOST = org.apache.log4j.DailyRollingFileAppender
    log4j.appender.LOCALHOST.File = ${catalina.base}/logs/localhost
    log4j.appender.LOCALHOST.Append = true
    log4j.appender.LOCALHOST.Encoding = UTF-8
    log4j.appender.LOCALHOST.DatePattern = '.'yyyy-MM-dd'.log'
    log4j.appender.LOCALHOST.layout = org.apache.log4j.PatternLayout
    log4j.appender.LOCALHOST.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
    
    log4j.appender.MANAGER = org.apache.log4j.DailyRollingFileAppender
    log4j.appender.MANAGER.File = ${catalina.base}/logs/manager
    log4j.appender.MANAGER.Append = true
    log4j.appender.MANAGER.Encoding = UTF-8
    log4j.appender.MANAGER.DatePattern = '.'yyyy-MM-dd'.log'
    log4j.appender.MANAGER.layout = org.apache.log4j.PatternLayout
    log4j.appender.MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
    
    log4j.appender.HOST-MANAGER = org.apache.log4j.DailyRollingFileAppender
    log4j.appender.HOST-MANAGER.File = ${catalina.base}/logs/host-manager
    log4j.appender.HOST-MANAGER.Append = true
    log4j.appender.HOST-MANAGER.Encoding = UTF-8
    log4j.appender.HOST-MANAGER.DatePattern = '.'yyyy-MM-dd'.log'
    log4j.appender.HOST-MANAGER.layout = org.apache.log4j.PatternLayout
    log4j.appender.HOST-MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
    
    log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender
    log4j.appender.CONSOLE.Encoding = UTF-8
    log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout
    log4j.appender.CONSOLE.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
    
    # Configure which loggers log to which appenders
    log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost] = INFO, LOCALHOST
    log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager] =\
      INFO, MANAGER
    log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager] =\
      INFO, HOST-MANAGER
    1. Log4J를 다운로드합니다 (Tomcat에는 v1.2.x가 필요함).
    2. 다운로드하거나 빌드 tomcat-juli.jar하고 tomcat-juli-adapters.jarTomcat의 "추가" 구성 요소로 사용할 수 있습니다. 자세한 내용은 추가 구성 요소 설명서를 참조하십시오 .
    3. 이는 tomcat-juli.jar기본 설정과 다릅니다. 여기에는 완전한 Apache Commons Logging 구현이 포함되어 있으므로 log4j의 존재를 발견하고 자체적으로 구성할 수 있습니다.
    4. 전역적으로 log4j를 사용하도록 Tomcat을 구성하려는 경우:
      • "extras"에서 에 log4j.jar넣 습니다 .tomcat-juli-adapters.jar$CATALINA_HOME/lib
      • "extras"에서 $CATALINA_HOME/bin/tomcat-juli.jar교체 하십시오 .tomcat-juli.jar
    5. $CATALINA_HOME별도 의 Tomcat을 실행 중이고 $CATALINA_BASE단일에서만 log4j를 사용하도록 구성하려는 경우 $CATALINA_BASE:
      • 존재하지 않는 경우 $CATALINA_BASE/bin및 디렉토리를 생성합니다 .$CATALINA_BASE/lib
      • " extras " log4j.jar에서 tomcat-juli-adapters.jar$CATALINA_BASE/lib
      • tomcat-juli.jar"extras"에서 다음과 같이 넣습니다 .$CATALINA_BASE/bin/tomcat-juli.jar
      • 보안 관리자 로 실행 중인 경우 $CATALINA_BASE/conf/catalina.policy파일을 편집하여 tomcat-juli.jar의 다른 복사본을 사용하도록 조정 해야 합니다 .
      참고: 이것은 라이브러리가 에 있는 경우 에 $CATALINA_BASE있는 동일한 라이브러리보다 우선적으로 로드되기 때문에 작동합니다 $CATALINA_HOME.
    6. 참고: tomcat-juli.jar는 부트스트랩 프로세스의 일부로 로드되고 모든 부트스트랩 클래스가 bin에서 로드되기 때문에 /lib $CATALINA_BASE가 아닌 / bin에서 로드됩니다.$CATALINA_BASE
    7. 길이가 0인 로그 파일을 생성하는 java.util.logging을 방지하려면 삭제하십시오 $CATALINA_BASE/conf/logging.properties.
    8. 톰캣 시작
    반응형

    댓글