Spring загрузочные вложенные журналы tomcat

Я использую встроенную в пружинную загрузку Tomcat с пружинной загрузкой 1.5.9, я также использую Log4j2.

В последнее время у меня возникают проблемы с загрузкой, поэтому я хочу лучше понять журналы Tomcat [не журналы доступа], я попробовал (в application.properties):

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

но ничего из вышеперечисленного не сработало. Есть ли другой способ добиться этого?

Ответ 1

Нашел это !! Теперь вы можете видеть внутренние журналы Embedded Tomcat в файле журнала приложения Log4j, выполнив 3 простых шага:

1] добавить в свой пом:

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

2] добавьте в свой рабочий аргумент новый параметр JVM, например:

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

3] добавить в ваше приложение. Свойства:

logging.level.org.apache=DEBUG

Наслаждайся жизнью ! :)

Объяснение: проблема в том, что уровни журнала Log4j не распространяются в JUL (что является фактическим способом ведения журнала, использующим встроенный tomcat), поэтому вышеприведенное достигает этого соединения с уровнями журнала JUL и Log4j.

Ссылка: После прочтения примечаний к выпуску Spring boot 1.5.10 (что не требуется для решения) я увидел новую документацию, которая проливает свет на то, как ее достичь, и пояснения к ней:

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

Ответ 2

Я много боролся и не нашел ничего из моей помощи. Ультимативно я создал "WAR" из моего загрузочного приложения spring. Разверните его на экземпляр tomcat и следуя инструкциям ниже, которые перенаправили все журналы журналов внутреннего журнала (JULI) в файл журнала приложений.

  • Удалите существующую библиотеку JULI (файл CATALINA_HOME/bin/tomcat-juli.jar) и существующий файл конфигурации Tomcat Java Logging (CATALINA_HOME/conf/logging.properties).

  • Загрузите библиотеку Tomcat JULI Log4j (tomcat-juli.jar) из раздела Extras для загрузки Tomcat (http://tomcat.apache.org/download-70.cgi). Поместите загруженный файл в каталог CATALINA_HOME/bin.

  • Загрузите библиотеку адаптеров Tomcat JULI (tomcat-juli-adapters.jar) из раздела Extras для загрузки Tomcat. Поместите этот файл в каталог CATALINA_HOME/lib.

  • Загрузите Log4j (версия 1.2 или новее) и поместите загруженный файл библиотеки в каталог CATALINA_HOME/lib.

  • Создайте конфигурационный файл Log4j в следующем каталоге: CATALINA_HOME/lib/log4j.properties. Проверьте ниже конфигурацию log4j, соответствующую конфигурации Java Logging по умолчанию.

  • Перезапустите Tomcat.

Конфигурация 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 @ссылка

В вашем загрузочном приложении spring вы можете вносить изменения, такие как добавление и удаление баннеров, папки со встроенного сервера Tomcat. Или даже добавление к нему настраиваемых файлов конфигурации с помощью TomcatEmbeddedServletContainerFactory.class, spring загрузки.

Ответ 3

Обратитесь к этому url, который содержит общие свойства приложения, который также включает свойства ведения журнала приложения и свойства регистрации уровня tomcat. Независимо от того, используете ли вы файл yaml или файл свойств, 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

Конфигурации по умолчанию предоставляются для Java Util Logging, Log4J, Log4J2 и Logback. В каждом случае регистраторы предварительно настроены для использования вывода консоли с дополнительным выходом файла.

ссылку: fooobar.com/questions/1692333/...

Встроенный tomcat в spring загружает внутренне эховые журналы на консоль. Конфигурация журнала по умолчанию будет эхо-сообщения на консоль по мере их написания. Поэтому, пока вы явно не укажете файл, как вы описали, он остается в консоли.

Из spring файл регистрации загрузки.

Вы можете заблокировать ведение журнала в соответствии с вашими потребностями.

Ответ 5

Пакет для встроенного tomcat org.springframework.boot.context.embedded.tomcat Поэтому добавив это в файл application.properties

logging.level.org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer=INFO

Ответ 6

Для slf4j и Spring Boot 2 скрыть исключения от Tomcat и обработать их самостоятельно:

  • Добавить в пом:

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jul-to-slf4j</artifactId>
        <version>${slf4j.version}</version>
    </dependency>
    
  • Добавить в конфиг:

    @PostConstruct
    void postConstruct() {
        SLF4JBridgeHandler.install();
    }
    
  • Добавить в application.yaml

    logging:
        level:
          org.apache.catalina: off
    
  • Обрабатывать исключение в ErrorController

    @Controller
    @Slf4j
    public class ErrorController implements 
                  org.springframework.boot.web.servlet.error.ErrorController {
        private static final String ERROR_PATH = "/error";
    
       @Autowired
       private ErrorAttributes errorAttributes;
    
       @Override
       public String getErrorPath() {
          return ERROR_PATH;
       }
    
       @RequestMapping(ERROR_PATH)
       public ModelAndView error(HttpServletRequest request) {
           return processException(errorAttributes.getError(new ServletWebRequest(request)));
       }
    }