简体   繁体   English

无法使用tomcat服务器中的Log4J和Spring Boot应用程序在单独的文件中写入日志

[英]can not write log in separate file using Log4J and spring boot application in tomcat server

I am new to the spring-boot applications and want to manage log properties to write logs to a separate file. 我是spring-boot应用程序的新手,并且想要管理日志属性以将日志写入单独的文件。 But my logs print only in 'Catalina.out' file. 但是我的日志仅在“ Catalina.out”文件中打印。

Here is some part of pom.xml: 这是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>
    .
    .
    .

here is the log4j2-spring.xml file: 这是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>

My spring-boot class: 我的春季靴课:

@SpringBootApplication
 public class MyApplication {

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

}

I wonder why my log file doesn't create logs didn't write in '>${catalina.base}/logs/logfile. 我想知道为什么我的日志文件不创建日志没有写在'> $ {catalina.base} / logs / logfile中。

I also test putting this line in 'application.properties' : 我也测试将这一行放在'application.properties'中:

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

You should write your application root package name ie the package contains all subpackages and classes of your application in Logger element name attribute - 您应该写出应用程序根包名称,即该包在Logger元素name属性中包含应用程序的所有子包和类-

In below lines - 在下面的行中-

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

Replace guru.springframework.blog.controllers with your application root package name. guru.springframework.blog.controllers替换为您的应用程序根软件包名称。

Alternatively, you can add App-File-Appender in Root Logger - 或者,您可以在Root Logger添加App-File-Appender

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

But, the general convention of using RootLogger is to log error messages of the application dependencies. 但是,使用RootLogger的一般约定是记录应用程序依赖项的错误消息。

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

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