已创建Log4j2文件,但未写入日志

我已将log4j2与springboot一起使用,已创建日志文件,但未将日志写入文件中。

name=PropertiesConfig

property.filename = /export/home/apps/logs

appenders = console, file

appender.console.type = Console

appender.console.name = STDOUT

appender.console.layout.type = PatternLayout

appender.console.layout.pattern = [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n

appender.file.type = File

appender.file.name = LOGFILE

appender.file.fileName=${filename}/app-frontend.log

appender.file.layout.type=PatternLayout

appender.file.layout.pattern=[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n

loggers=file

logger.file.name=guru.springframework.blog.log4j2properties

logger.file.level = debug

logger.file.appenderRefs = file

logger.file.appenderRef.file.ref = LOGFILE

rootLogger.level = debug

rootLogger.appenderRefs = stdout

rootLogger.appenderRef.stdout.ref = STDOUT

<dependencies>

<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-test</artifactId>

<scope>test</scope>

</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>

</dependencies>

使用记录器的方法

private static Logger logger = LogManager.getLogger();

@RequestMapping(value="/check", method = RequestMethod.GET)

public String healthCheck() {

logger.debug("Health-check invoked");

return "Hey, I am fine";

}

上面我提到了我使用的代码。仍然找不到解决方法。日志甚至没有出现在控制台中。

回答:

在弹簧引导中使用“ log4j2.properties”进行配置有一定的局限性。Log4J

2最初发布时不支持通过属性文件进行配置。这是从Log4J的2.4这再次增加了属性文件的支持,但在提到一个完全不同的syntax.As

文档

从2.4版开始,Log4j现在支持通过属性文件进行配置。请注意,属性语法与Log4j 1中使用的语法不同。

从2.6版开始,不再需要该标识符列表,因为会在首次使用时推断出名称,但是,如果您希望使用更复杂的标识符,则仍必须使用该列表。如果列表存在,将使用它。

从Spring Boot版本1.4.0开始,使用的log4j2 api版本为2.6.2。请注意,spring-boot使用slf4j

api支持多个基础Logging Framework。在将基于属性的配置用于log4j2时,似乎没有问题,而没有为slf4j绑定使用类路径依赖项。

使用基于XML(或yaml / json)的配置来实现相同配置并启用log4j2能够使用的所有功能将是有意义的。

这是具有相同属性的基于xml的配置。

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>

<Configuration monitorInterval="60">

<Properties>

<Property name="filename">export/home/apps/logs</Property>

</Properties>

<Appenders>

<Console name="STDOUT" target="SYSTEM_OUT">

<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/>

</Console>

<File name="LOGFILE"

fileName="${filename}/app-frontend.log">

<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/>

</File>

</Appenders>

<Loggers>

<Logger name="guru.springframework.blog.log4j2properties" level="debug">

<AppenderRef ref="LOGFILE"

level="debug" />

</Logger>

<Root level="debug">

<AppenderRef ref="STDOUT"/>

</Root>

</Loggers>

以上是 已创建Log4j2文件,但未写入日志 的全部内容, 来源链接: utcz.com/qa/416374.html

回到顶部