Весенняя загрузка .war журналов приложений Tomcat нет - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь записать в журналы моего веб-приложения файл .log в каталоге / logs в tomcat, но файл не генерируется, и никакие выходные данные журналов не поступают на консоль, кроме журналов пружин и журналов tomcat. Когда я запускаю весеннюю загрузку в виде jar-файла со встроенным tomcat, он просто отлично записывает в файл журнала, но как только я внедряюсь в tomcat через папку webapps, журналы приложений больше не находятся.

SpringBoot 2.1.2 Java 1.8 Tomcat 8.5

Я пробовал:

  • настройка LOGGING_CONFIG в setenv.sh
  • Несколько логгеров .. logback, утилиты java и т.д ..

application.properties:

logging.file=../logs/my-app.log
logging.level.org.springframework=INFO
logging.level.com.bose=DEBUG

log4j.properties для log4j:

log4j.rootLogger=${marge.log.level}, stdout, file

# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=marge.log

#when stdout is also specified it will not write to the file

log4j.appender.file.MaxFileSize=1MB
# Keep one backup file
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{dd MMM yyyy HH:mm:ss,SSS} [%c] [%-5p] %n%m%n

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
# stdout uses PatternLayout
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{HH:mm:ss,SSS} [%c] [%-5p] %n%m%n

# Print only messages of level DEBUG or above in the package com.bose
log4j.logger.com.app=${log.level}

Ожидается: при развертывании моего webapp в / webapps журналы приложений (генерируемые log4j) должны находиться в my-app.log в каталоге / logs

Факт: файл не создается и журналы отсутствуют даже в stdout / console

1 Ответ

0 голосов
/ 11 июля 2019

По умолчанию пружинная загрузка использует logback в качестве связующего устройства для ведения журнала, поэтому ключевая концепция здесь, чтобы сначала исключить logback, затем включить log4j

Пример:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <exclusions>
      <exclusion>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-logging</artifactId>
      </exclusion>
    </exclusions>
</dependency>

Послекоторые добавляют log4j 2-зависимость:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
  • Добавьте ваш log4j2.properties файл в src/main/resources, чтобы находиться на пути к классам
  • Наконец, обратите внимание на то, какой вы интерфейс регистрациииспользование этого важно, с вышеуказанной конфигурацией вы должны использовать apache протоколирование, например:

     package com.example;
    
     import org.apache.logging.log4j.LogManager;
     import org.apache.logging.log4j.Logger;
     import org.springframework.boot.SpringApplication;
     import org.springframework.boot.autoconfigure.SpringBootApplication;
     import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
     import org.springframework.context.ApplicationContext;
    
      @SpringBootApplication
      public class Application extends SpringBootServletInitializer {
    
      private static final Logger LOGGER = LogManager.getLogger(Application.class);
    
      public static void main(String[] args){
        ApplicationContext ctx = SpringApplication.run(Application.class, args);
    
        LOGGER.info("Info level log message");
        LOGGER.debug("Debug level log message");
        LOGGER.error("Error level log message");
        }
      }
    
...