【问题标题】:can not write log in separate file using Log4J and spring boot application in tomcat server无法在tomcat服务器中使用Log4J和spring boot应用程序将日志写入单独的文件
【发布时间】:2018-04-23 10:22:47
【问题描述】:

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

我的spring-boot类:

@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

【问题讨论】:

    标签: java spring-boot log4j log4j2


    【解决方案1】:

    您应该在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 的一般约定是记录应用程序依赖项的错误消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-15
      • 1970-01-01
      • 1970-01-01
      • 2020-06-07
      • 2017-12-15
      相关资源
      最近更新 更多