无法使用log4j和spring boot应用程序在tomcat服务器中写入log



我是Spring-Boot应用程序的新手,并希望管理日志属性以将日志写入单独的文件。但是我的日志仅在" catalina.out"文件中打印。

这是pom.xml的某些部分:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.10.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
    .
    .
    .
    <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>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-log4j2</artifactId>
    </dependency>
    .
    .
    .

这是log4j2-spring.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration monitorInterval="60">
<Properties>
    <Property name="log-path">${catalina.base}/logs</Property>
</Properties>
<Appenders>
    <Console name="Console-Appender" target="SYSTEM_OUT">
        <PatternLayout>
            <pattern>
                [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
            </pattern>>
        </PatternLayout>
    </Console>
    <File name="App-File-Appender" fileName="${log-path}/app_log.log" >
        <PatternLayout>
            <pattern>
                [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
            </pattern>
        </PatternLayout>
    </File>
    <File name="SpringBoot-File-Appender" fileName="${log-path}/springboot_log.log" >
        <PatternLayout>
            <pattern>
                [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
            </pattern>
        </PatternLayout>
    </File>
</Appenders>
<Loggers>
    <Logger name="org.springframework.web" level="info" additivity="false">
        <AppenderRef ref="SpringBoot-File-Appender"/>
        <AppenderRef ref="Console-Appender"/>
    </Logger>
    <Logger name="guru.springframework.blog.controllers" level="info" additivity="false">
        <AppenderRef ref="App-File-Appender"/>
        <AppenderRef ref="Console-Appender"/>
     </Logger>
    <Root>
        <AppenderRef ref="Console-Appender"/>
    </Root>
</Loggers>

我的弹簧靴课:

@SpringBootApplication
 public class MyApplication {
public static void main(String[] args) {
    SpringApplication.run(MyApplication.class, args);
}

我想知道为什么我的日志文件没有创建日志未写入'> $ {catalina.base}/logs/logfile。

我还测试将此行放入" application.properties"中:

logging.file=../logs/mylog.log

您应该编写应用程序root软件包名称,即包含在Logger元素name属性中的应用程序和类别的所有子弹和类 -

在下线 -

<Logger name="guru.springframework.blog.controllers" level="info" additivity="false">
        <AppenderRef ref="App-File-Appender"/>
        <AppenderRef ref="Console-Appender"/>
     </Logger>

用您的应用程序根软件包名称替换guru.springframework.blog.controllers

另外,您可以在Root Logger中添加App-File-Appender -

<Root>
    <AppenderRef ref="App-File-Appender"/>
    <AppenderRef ref="Console-Appender"/>
</Root>

但是,使用RootLogger的一般惯例是记录应用程序依赖项的错误消息。

相关内容

最新更新