java - log4j 1 到 log4j 2 属性文件

标签 java log4j log4j2

有人可以帮我吗?

我将从 log4j 1 转到 2,但无法获取工作属性文件。滚动文件vds.log不出现

这是我旧的工作 Prop

# default properties to initialise log4j
log4j.rootLogger=INFO, rollingFile

# settings for specific packages
log4j.logger.com.wordnik.swagger=INFO
log4j.logger.org.apache.camel.component.servlet=INFO
log4j.logger.org.apache.camel.component.swagger=INFO
log4j.logger.org.apache.camel=INFO

# Console appender
# Uncomment when running locally
#log4j.appender.console=org.apache.log4j.ConsoleAppender
#log4j.appender.console.layout=org.apache.log4j.PatternLayout
#log4j.appender.console.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n


log4j.appender.rollingFile=org.apache.log4j.RollingFileAppender
log4j.appender.rollingFile.maxFileSize=10MB
log4j.appender.rollingFile.maxBackupIndex=10
log4j.appender.rollingFile.File=C:/logs/vds.log

log4j.appender.rollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.rollingFile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %m%n
log4j.appender.rollingFile.append=true

这是我尝试过的,但不起作用

status = debug
name= vds

# Log files location
property.basePath = c:/logs

appender.logger.com.wordnik.swagger=INFO
appender.logger.org.apache.camel.component.servlet=INFO
appender.logger.org.apache.camel.component.swagger=INFO
appender.logger.org.apache.camel=INFO

# RollingFileAppender name, pattern, path and rollover policy
appender.rolling.type = RollingFile
appender.rolling.name = fileLogger
appender.rolling.fileName= ${basePath}/app.log
appender.rolling.filePattern= ${basePath}/app_%d{yyyyMMdd}.log.gz
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %d{yyyy-MM-dd HH:mm:ss.SSS} %level [%t] [%l] - %msg%n
appender.rolling.policies.type = Policies

# RollingFileAppender rotation policy
appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 1
appender.rolling.policies.time.modulate = true
appender.rolling.strategy.type = DefaultRolloverStrategy
appender.rolling.strategy.delete.type = Delete
appender.rolling.strategy.delete.basePath = ${basePath}
appender.rolling.strategy.delete.maxDepth = 10
appender.rolling.strategy.delete.ifLastModified.type = IfLastModified

# Delete all files older than 30 days
appender.rolling.strategy.delete.ifLastModified.age = 30d

# Configure root logger
rootLogger.level = debug
rootLogger.appenderRef.rolling.ref = fileLogger

POM

 <!-- logging -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.16.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.16.0</version>
        </dependency>

我查看了其他答案,但没有一个对我有帮助。这就是为什么我求助于帮助。 有人可以帮帮我吗?提前致谢。

最佳答案

属性文件格式不是 Log4j 2.x 中的默认配置格式(仅在 2.4 中引入)。如果您要使用 XML,log4j-1.2-api 中有一个自动配置转换器。 ,它可以使用以下方法将您的属性文件转换为 XML:

java -cp log4j-1.2-api-2.16.0.jar:log4j-api-2.16.0.jar:log4j-core-2.16.0.jar org.apache.log4j.config.Log4j1ConfigurationConverter -i log4j.properties -o log4j2.xml

(我假设所有三个 jar,log4j-1.2-apilog4j-apilog4j-core 都在当前目录中) 。就您而言,这将为您提供:

<?xml version="1.0" ?>
<Configuration name="Log4j1">
  <Appenders>
    <RollingFile
      name="rollingFile"
      fileName="C:/logs/vds.log"
      filePattern="C:/logs/vds.log.%i">
      <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %m%n" />
      <Policies>
        <SizeBasedTriggeringPolicy size="10485760" />
      </Policies>
      <DefaultRolloverStrategy max="1" />
    </RollingFile>
  </Appenders>
  <Loggers>
    <Root level="INFO">
      <AppenderRef ref="rollingFile" />
    </Root>
    <Logger
      name="org.apache.camel.component.swagger"
      level="INFO" />
    <Logger
      name="org.apache.camel.component.servlet"
      level="INFO" />
    <Logger
      name="org.apache.camel"
      level="INFO" />
    <Logger
      name="com.wordnik.swagger"
      level="INFO" />
  </Loggers>
</Configuration>

(缩进是我的)。备注:max="1" 可能是转换器中的一个错误。

如果您坚持使用属性格式,您的记录器配置应如下所示:

logger.1.name=com.wordnik.swagger
logger.1.level=INFO
logger.2.name=org.apache.camel.component.servlet
logger.2.level=INFO
logger.3.name=org.apache.camel.component.swagger
logger.3.level=INFO
logger.4.name=org.apache.camel
logger.4.level=INFO

关于java - log4j 1 到 log4j 2 属性文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70386274/

相关文章:

java - Log4j2 网络查询

java - 如何使用log4j2(xml中的MDC)将不同的日志写入不同的文件?

java - Tomcat JNDI 查找问题

java - Enum.values() 在哪里定义?

java - 如何使用 log4j 将错误信息写入单独的文件中

java - 使用 Log4j 和 slf4j 日志文件中没有输出

java - 使用 slf4j 作为 log4j2 的抽象

Java Spring MVC : After controller forwards, 浏览器显示来自旧 Controller 的 url,而不是它转发到的 Controller 的 url

java - Tess4j 不使用它的 tessdata 文件夹

java - 来自 log4j2 的奇怪日志