복붙노트

[SPRING] 봄 부트 임베디드 톰캣 로그

SPRING

봄 부트 임베디드 톰캣 로그

나는 스프링 부트 임베디드 바람둥이와 스프링 부트 1.5.9를 사용하고 있는데, 또한 Log4j2를 사용하고 있습니다.

최근로드 중에 문제가 발생하므로 tomcat 로그를 더 잘 이해하고 싶습니다. [액세스 로그가 아님], 시도했습니다 (application.properties에서).

logging.level.org.apache.tomcat: INFO
logging.level.org.apache.catalina: INFO

그러나 위의 누구도 일하지 않았습니다. 그것을 달성하는 다른 방법이 있습니까?

해결법

  1. ==============================

    1.그것을 발견 !! 다음과 같은 3 단계로 응용 프로그램의 Log4j 로그 파일에서 Embedded Tomcat의 내부 로그를 볼 수 있습니다.

    그것을 발견 !! 다음과 같은 3 단계로 응용 프로그램의 Log4j 로그 파일에서 Embedded Tomcat의 내부 로그를 볼 수 있습니다.

    1] 당신의 pom에 추가하십시오 :

     <dependency>
          <groupId>org.apache.logging.log4j</groupId>
          <artifactId>log4j-jul</artifactId>
         </dependency>
    

    2] 실행중인 arg에 새 JVM 매개 변수를 추가하십시오 (예 :

    java -Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager -jar target/demo-0.0.1-SNAPSHOT.jar
    

    3] your application.properties에 추가하십시오 :

    logging.level.org.apache=DEBUG
    

    즐거운 삶 ! :)

    설명 : 문제는 Log4j 로그 레벨이 JUL (실제 로깅 방법 인 Embedded Tomcat 사용)으로 전파되지 않기 때문에 위의 내용은 JUL 및 Log4j 로그 레벨과의 연결을 달성하기 때문입니다.

    참고: Spring 부트 1.5.10 릴리스 노트 (솔루션에는 필요하지 않음)를 읽은 후, 새로운 문서를 통해이를 어떻게 구현하고 설명하는지 밝혀 냈습니다.

    https://github.com/spring-projects/spring-boot/issues/2923#issuecomment-358451260

  2. ==============================

    2.나는 많은 어려움을 겪었고, 내 도움이되는 것을 찾지 못했습니다. 엄만 내 봄 부팅 응용 프로그램에서 "WAR"를 빌드했습니다. 인스턴스를 Tomcat에 배포하고 아래의 단계를 따라 모든 내부 Tomcat 로그 (JULI) 로그를 내 응용 프로그램 로그 파일로 리디렉션했습니다.

    나는 많은 어려움을 겪었고, 내 도움이되는 것을 찾지 못했습니다. 엄만 내 봄 부팅 응용 프로그램에서 "WAR"를 빌드했습니다. 인스턴스를 Tomcat에 배포하고 아래의 단계를 따라 모든 내부 Tomcat 로그 (JULI) 로그를 내 응용 프로그램 로그 파일로 리디렉션했습니다.

    Log4j 구성 파일 기본 Tomcat 로깅 설정 매치 :

    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
    

    GIT @ link에서 사용할 수있는 어댑터를 확인할 수도 있습니다.

    스프링 부트 응용 프로그램에서 jars, embedded Tomcat 서버의 폴더를 추가 및 제거하거나 TomcatEmbeddedServletContainerFactory.class를 사용하여 스프링 부트의 사용자 정의 구성 파일을 추가하는 등의 작업을 변경할 수 있습니다.

  3. ==============================

    3.응용 프로그램 로깅 등록 정보 및 바람둥이 수준 로깅 등록 정보를 포함하는 일반적인 응용 프로그램 등록 정보가 들어있는이 URL을 참조하십시오. yaml 또는 properties 파일을 사용하든, spring boot는이 구성을 사용하여 응용 프로그램을 부트 스트랩합니다. 아래 구성 항목을 검색하십시오.

    응용 프로그램 로깅 등록 정보 및 바람둥이 수준 로깅 등록 정보를 포함하는 일반적인 응용 프로그램 등록 정보가 들어있는이 URL을 참조하십시오. yaml 또는 properties 파일을 사용하든, spring boot는이 구성을 사용하여 응용 프로그램을 부트 스트랩합니다. 아래 구성 항목을 검색하십시오.

    # LOGGING
    logging.config= # Location of the logging configuration file. For instance `classpath:logback.xml` for Logback
    logging.exception-conversion-word=%wEx # Conversion word used when logging exceptions.
    logging.file= # Log file name. For instance `myapp.log`
    logging.level.*= # Log levels severity mapping. For instance `logging.level.org.springframework=DEBUG`
    logging.path= # Location of the log file. For instance `/var/log`
    logging.pattern.console= # Appender pattern for output to the console. Only supported with the default logback setup.
    logging.pattern.file= # Appender pattern for output to the file. Only supported with the default logback setup.
    logging.pattern.level= # Appender pattern for log level (default %5p). Only supported with the default logback setup.
    logging.register-shutdown-hook=false # Register a shutdown hook for the logging system when it is initialized.
    
    server.tomcat.accept-count= # Maximum queue length for incoming connection requests when all possible request processing threads are in use.
    server.tomcat.accesslog.buffered=true # Buffer output such that it is only flushed periodically.
    server.tomcat.accesslog.directory=logs # Directory in which log files are created. Can be relative to the tomcat base dir or absolute.
    server.tomcat.accesslog.enabled=false # Enable access log.
    server.tomcat.accesslog.file-date-format=.yyyy-MM-dd # Date format to place in log file name.
    server.tomcat.accesslog.pattern=common # Format pattern for access logs.
    server.tomcat.accesslog.prefix=access_log # Log file name prefix.
    server.tomcat.accesslog.rename-on-rotate=false # Defer inclusion of the date stamp in the file name until rotate time.
    server.tomcat.accesslog.request-attributes-enabled=false # Set request attributes for IP address, Hostname, protocol and port used for the request.
    server.tomcat.accesslog.rotate=true # Enable access log rotation.
    server.tomcat.accesslog.suffix=.log # Log file name suffix.
    server.tomcat.additional-tld-skip-patterns= # Comma-separated list of additional patterns that match jars to ignore for TLD scanning.
    server.tomcat.background-processor-delay=30 # Delay in seconds between the invocation of backgroundProcess methods.
    server.tomcat.basedir= # Tomcat base directory. If not specified a temporary directory will be used.
    server.tomcat.internal-proxies=10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|\\
            192\\.168\\.\\d{1,3}\\.\\d{1,3}|\\
            169\\.254\\.\\d{1,3}\\.\\d{1,3}|\\
            127\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|\\
            172\\.1[6-9]{1}\\.\\d{1,3}\\.\\d{1,3}|\\
            172\\.2[0-9]{1}\\.\\d{1,3}\\.\\d{1,3}|\\
            172\\.3[0-1]{1}\\.\\d{1,3}\\.\\d{1,3} # regular expression matching trusted IP addresses.
    server.tomcat.max-connections= # Maximum number of connections that the server will accept and process at any given time.
    server.tomcat.max-http-post-size=0 # Maximum size in bytes of the HTTP post content.
    server.tomcat.max-threads=0 # Maximum amount of worker threads.
    server.tomcat.min-spare-threads=0 # Minimum amount of worker threads.
    server.tomcat.port-header=X-Forwarded-Port # Name of the HTTP header used to override the original port value.
    server.tomcat.protocol-header= # Header that holds the incoming protocol, usually named "X-Forwarded-Proto".
    server.tomcat.protocol-header-https-value=https # Value of the protocol header that indicates that the incoming request uses SSL.
    server.tomcat.redirect-context-root= # Whether requests to the context root should be redirected by appending a / to the path.
    server.tomcat.remote-ip-header= # Name of the http header from which the remote ip is extracted. For instance `X-FORWARDED-FOR`
    server.tomcat.uri-encoding=UTF-8 # Character encoding to use to decode the URI.
    
  4. ==============================

    4.Java Util Logging, Log4J, Log4J2 및 Logback에 대한 기본 구성이 제공됩니다. 각각의 경우 로거는 콘솔 출력을 사용하도록 사전 구성되어 있으며 선택적 파일 출력도 사용할 수 있습니다

    Java Util Logging, Log4J, Log4J2 및 Logback에 대한 기본 구성이 제공됩니다. 각각의 경우 로거는 콘솔 출력을 사용하도록 사전 구성되어 있으며 선택적 파일 출력도 사용할 수 있습니다

    이 링크를 참조하십시오 : https://stackoverflow.com/questions/31939849/spring-boot-default-log-location/31939886

    내부적으로 봄 부팅시 포함 된 바람둥이가 로그를 콘솔에 에코합니다. 기본 로그 구성은 작성된 메시지를 콘솔에 표시합니다. 따라서 설명대로 파일을 명시 적으로 지정하기 전까지는 콘솔에 남아 있습니다.

    봄 부팅 로깅 doc에서.

    필요에 따라 로깅을 custmize 할 수 있습니다.

  5. ==============================

    5.embeded tomcat을위한 패키지는 org.springframework.boot.context.embedded.tomcat이다. 그래서 이것을 application.properties 파일에 추가하십시오.

    embeded tomcat을위한 패키지는 org.springframework.boot.context.embedded.tomcat이다. 그래서 이것을 application.properties 파일에 추가하십시오.

    logging.level.org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer=INFO
    
  6. from https://stackoverflow.com/questions/48312851/spring-boot-embedded-tomcat-logs by cc-by-sa and MIT license