简体   繁体   English

Spring 使用 log4j2 和 tomcat 启动

[英]Spring boot with log4j2 and tomcat

I'm facing some troubles with a spring boot web application.我在使用 spring 启动 web 应用程序时遇到了一些麻烦。 I'm not using embedded tomcat, I disabled it.我没有使用嵌入式 tomcat,我禁用了它。 My web app it's using Log4j2 as logger.我的 web 应用程序使用 Log4j2 作为记录器。 While debugging in Eclipse there's no problems and create my log file but with external tomcat does not.在 Eclipse 中调试时没有问题并创建我的日志文件,但使用外部 tomcat 没有。 This is my pom file:这是我的 pom 文件:

<project xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.14.RELEASE</version>
    <relativePath /> <!-- lookup parent from repository -->
  </parent>

  <groupId>pos.com.incidents</groupId>
  <artifactId>pos-com-incidents</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <name>pos-com-incidents</name>

  <properties>
    <java.version>1.8</java.version>
  </properties>

  <dependencies>

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

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>

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

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-log4j2</artifactId>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
      <scope>provided</scope>
    </dependency>

    <!-- Lombok -->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <optional>true</optional>
    </dependency>

    <!-- Informix -->
    <dependency>
      <groupId>JDBCDrivers.Informix</groupId>
      <artifactId>ifxjdbc</artifactId>
      <version>4.10.JC4</version>
    </dependency>

    <!-- Log4j -->
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>
    </dependency>

    <!-- Jackson -->
    <dependency>
      <groupId>com.fasterxml.jackson.dataformat</groupId>
      <artifactId>jackson-dataformat-yaml</artifactId>
    </dependency>

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
    </dependency>

    <!-- Apache Commons -->
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
    </dependency>

    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-collections4</artifactId>
      <version>4.0</version>
    </dependency>

    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.6</version>
    </dependency>

    <dependency>
      <groupId>commons-beanutils</groupId>
      <artifactId>commons-beanutils</artifactId>
      <version>1.9.2</version>
    </dependency>

    <dependency>
      <groupId>commons-validator</groupId>
      <artifactId>commons-validator</artifactId>
      <version>1.6</version>
    </dependency>

    <!-- Joda -->
    <dependency>
      <groupId>joda-time</groupId>
      <artifactId>joda-time</artifactId>
    </dependency>
  </dependencies>

  <build>
    <finalName>${artifactId}</finalName>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>

</project>

My Log4j2 configuration file.我的 Log4j2 配置文件。 I like yml files.我喜欢 yml 文件。

Configuration:
  status: warn

  appenders:
    Console:
      name: AppConsole
      target: SYSTEM_OUT
      PatternLayout:
        Pattern: "%style{%d{ISO8601}}{black} %highlight{%-5level }[%style{%t}{bright,blue}] %style{%C{1.}}{bright,yellow}: %msg%n%throwable"

    RollingFile:
      - name: AppDetail
        fileName: ${catalina.home}/logs/Incidents.log
        filePattern: "${catalina.home}/logs/Incidents-%d{-yyyy-MM-dd-}-%i.log.gz"
        PatternLayout:
          pattern: "%d %p %C{1.} [%t] %m%n"
        Policies:
          OnStartupTriggeringPolicy: {}
          SizeBasedTriggeringPolicy:
            size: 50 MB
        DefaultRollOverStrategy:
          max: 30

  Loggers:
    logger:
      - name: pos.sams.incidents.logging
        level: info
        additivity: false
        AppenderRef:
          - ref: AppDetail
          - ref: AppConsole

    Root:
      level: info
      AppenderRef:
        ref: AppConsole

I don't want to use Log4j2 as a logger for tomcat but just for my app.我不想将 Log4j2 用作 tomcat 的记录器,而只是用于我的应用程序。 What could be the problem and solution?可能是什么问题和解决方案?

If somebody is facing this problem, change ${catalina.home} for ${sys:catalina.home} , documentation helps.如果有人遇到此问题, ${catalina.home}更改为${sys:catalina.home} ,文档会有所帮助。

http://logging.apache.org/log4j/2.x/manual/configuration.html#PropertySubstitution http://logging.apache.org/log4j/2.x/manual/configuration.html#PropertySubstitution

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM