我将Spring Boot应用程序从web.xml配置文件迁移到了基于Java的配置。在此应用程序中,我们使用log4j2进行日志记录,但是由于周围的某些系统使用了log4j,因此我们也使用了log4j,因此我们无法删除它。
完成所有迁移后,日志不起作用。我发现必须将以下代码添加到我的application.properties文件中
logging.level.project.base.package=TRACE
logging.level.org.springframework=INFO
logging.level.org.hibernate=INFO
添加所有这些已创建的日志以显示,但是只能识别属性文件log4j.properties,并且使用log4j2的日志具有默认的日志记录模式。
如果我删除log4j.properties文件,则log4j2仍然不起作用,此外,我还会收到以下警告消息
log4j:WARN No appenders could be found for logger (org.springframework.web.context.support.StandardServletEnvironment).
log4j:WARN Please initialize the log4j system properly.
我还尝试通过以下方式在application.properties中指定配置文件路径
logging.config=application.properties
logging.config=classpath:application.properties
我们的pom.xml依赖项如下
<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-log4j2</artifactId>
</dependency>
我们没有使用嵌入式tomcat运行,因此我们有一个配置类扩展了SpringBootServletInitializer。我们使用的是2.0.1.RELEASE Spring Boot版本。
下面您可以找到我的2个log4j配置文件
log4j.properties
conversionPatternShort=OLDLOGGGGER %5p %d %-30C{1}:%4L [%X{username}] - %m%n
### APPENDER
log4j.appender.crt=org.apache.log4j.ConsoleAppender
log4j.appender.crt.layout=org.apache.log4j.PatternLayout
log4j.appender.crt.layout.ConversionPattern=${conversionPatternShort}
### Define Levels per package
log4j.rootLogger=ERROR,crt
log4j.logger.some.package1=DEBUG,crt
log4j.logger.some.package2=DEBUG,crt
log4j2.properties
status=ERROR
dest=err
name=LocalConfig
### PATTERN
property.conversionPatternShort=%5p %d %-30C{1}:%4L [%X{username}] - %m%n
### APPENDER
appenders=crt
appender.crt.type=Console
appender.crt.name=crt
appender.crt.layout.type=PatternLayout
appender.crt.layout.pattern=${conversionPatternShort1}
## LOGGER
## defining some loggers, foreach logger I have defined
## (name, level, additivity, appenderRef.crt.ref)
logger.xxxxx.name=namex
logger.xxxxx.level=DEBUG
logger.xxxxx.additivity=false
logger.xxxxx.appenderRef.crt.ref=crt
logger.yyyyy.name=namey
logger.yyyyy.level=DEBUG
logger.yyyyy.additivity=false
logger.yyyyy.appenderRef.crt.ref=crt
logger.hibernateUtil.name=org.hibernate.engine.jdbc.spi.SqlExceptionHelper
logger.hibernateUtil.level=ERROR
logger.hibernateUtil.additivity=false
logger.hibernateUtil.appenderRef.crt.ref=crt
rootLogger.level=WARN
rootLogger.appenderRef.crt.ref=crt
我真的找不到导致log4j2不再起作用的更改。你能帮忙吗?