当前位置: 首页 > 知识库问答 >
问题:

从log4j 1迁移时无法生成日志。x到log4j 2。在springbootweb应用程序中使用bridgejar

刘胜泫
2023-03-14

我正在尝试从log4j1迁移。x到log4j2。十、

Followed this link - https://logging.apache.org/log4j/2.x/manual/migration.html

但我没有看到日志是在更改后生成的。我不知道我错过了什么。

下面是详细信息-现有log4j版本-

 <dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

这被替换为-

<dependency>
  <groupId>org.apache.logging.log4j</groupId>
  <artifactId>log4j-1.2-api</artifactId>
  <version>2.6.2</version>
</dependency>
<dependency>
 <groupId>org.apache.logging.log4j</groupId>
 <artifactId>log4j-jcl</artifactId>
 <version>2.6.2</version>
</dependency>

我可以看到log4j-1.2.17.jar被这四个罐子取代了-

  1. log4j-jcl-2.6.2。罐子
  2. log4j-core-2.1。罐子
  3. log4j-api-2.1。罐子
  4. log4j-1.2-api-2.6.2。罐子

这是现有的配置文件(filename/usr/local/log4j.properties)-

log4j.rootLogger=INFO, file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=/var/log/access.log
log4j.appender.file.MaxFileSize=5MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
   

已替换此系统属性值-

logging.config=/usr/local/log4j.properties

用这两条线

log4j1.compatibility=true
log4j.configuration=/usr/local/log4j.properties

共有1个答案

徐奇逸
2023-03-14

SpringBoot在很早的阶段就重新配置了日志框架。这就是为什么您的外部log4j。属性文件在应用程序启动期间被Spring替换。

如果不提供日志记录。config属性,将使用固定的类路径资源列表(参见列表)或应用默认配置

在最新的Log4j版本上,您只需设置系统属性:

logging.config=/usr/local/log4j.properties
log4j.configurationFactory=org.apache.log4j.config.Log4j1ConfigurationFactory

但是,您不能使用最新版本,因为:

  1. log4j core中的突破性更改(参见LOG4J2-1547)导致版本2.7.0及更高版本与Spring Boot 1.2不兼容。x、
  2. 一系列安全漏洞将您的选择限制到2.3.2版

使用2.3.2版,您需要转换log4j。将属性文件放入Log4j 2中。x格式(您可以使用此问题中的转换器):

<?xml version="1.0"?>
<Configuration name="Log4j1">
  <Appenders>
    <RollingFile name="file" fileName="/var/log/access.log"
    filePattern="/var/log/access.log.%i">
      <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
      <Policies>
        <SizeBasedTriggeringPolicy size="5MB" />
      </Policies>
      <DefaultRolloverStrategy max="10" />
    </RollingFile>
  </Appenders>
  <Loggers>
    <Root level="INFO">
      <AppenderRef ref="file" />
    </Root>
  </Loggers>
</Configuration>

并设置系统属性:

logging.config=/path/to/the/file/above.xml

备注:Spring Boot提供了一系列的启动器,可以拉取正确的依赖项。为了使用Log4j 2. x,您只需要排除标准的sping-boo-starter-log,并包含sping-boo-starter-log4j2。不需要显式的Log4j依赖项(除了log4j-1.2-api,如果您在代码中使用Log4j 1. x):

  <properties>
    <log4j2.version>2.3.2</log4j2.version>
  </properties>
  <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-log4j2</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-1.2-api</artifactId>
      <version>${log4j2.version}</version>
    </dependency>
  </dependencies>
 类似资料:
  • 嗨,我遇到了一些使用log4j的代码。我想移动到log4j2。从http://logging.apache.org/log4j/2.x/manual/migration.html中,我发现可以使用log4j-1.2-api.jar。我有以下问题: > 在代码中,我有一个自定义的appender(正如链接中给出的,我不应该使用类appender的内部),这意味着我不能使用log4j-1.2-api.

  • 如何在中添加以下字段。log4j2的属性配置文件? log4j。阿佩德。最高可用性构架。MaxFileSize=50MB log4j。阿佩德。最高可用性构架。MaxBackupIndex=100

  • 我需要选择一个日志框架来替换log4j。我最初选择slf4j logback作为日志记录,并编写了以下配置,将应用程序日志和apache cxf的日志输出到单独的文件中,并在控制台上输出Spring/hibernate日志: 然而,我开始了解log4j2中的异步日志记录,我想在我的设置中使用log4j2实现异步日志记录,为此我编写了以下配置: log4j2配置可以工作,但它只在文件(app_log

  • 我们将多个spring mvc应用程序(war)部署到WebLogic12c。每个was都依赖于一个或两个与其打包的应用程序库(jar)。我们想要做的是,创建应用程序(war)特定的日志文件,并将其配置为根据一定的大小旋转,并将其旧日志文件归档到某个文件夹。 如何在log4j2中实现?

  • 我从log4j1迁移过来。x到log4j2。我删除了log4j。属性文件并创建了log4j2。xml文件。迁移后,我运行了应用程序,但找不到。日志文件。 有没有人能告诉我

  • 我是Spring boot的新手,正在尝试将现有的应用程序从1.5迁移到2.0。我阅读了《迁移指南》,发现将preoperties-migrator作为依赖项包含在父pom中会指出为了迁移需要进行的更改,因此我在pom.xml中添加了以下依赖项 谁能指出哪里不对。 pom.xml