[英]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.