无法使用Tomcat服务器中的Log4J和spring启动应用程序在单独的文件中写入日志

时间:2018-04-23 10:22:47

标签: java spring-boot log4j log4j2

我是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);

}

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

我还测试将这一行放在'application.properties'中:

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

1 个答案:

答案 0 :(得分:0)

您应该编写应用程序根包名称,即包中包含previous元素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 -

中添加App-File-Appender
Root Logger

但是,使用<Root> <AppenderRef ref="App-File-Appender"/> <AppenderRef ref="Console-Appender"/> </Root> 的一般惯例是记录应用程序依赖项的错误消息。

相关问题