动态设置Log4j.xml日志文件名

时间:2014-09-15 05:26:47

标签: java log4j

我想设置log4j.xml的日志文件名。我们正在进行每日翻转。日志文件名格式为hostname_current datetime.log。我正在使用应用程序服务器作为JBoss EAP 6.2

2 个答案:

答案 0 :(得分:0)

您可以使用PropertyConfigurator.configure(path.log4j.properties)在运行时配置log4j; 现在,如果要更改日志文件名,可以每次使用不同的路径或动态更改属性文件。 也许有一种更好的方法可以在不使用文件的情况下做到这一点,但我不知道。

答案 1 :(得分:0)

我不知道你是否使用log4j 1.x或log4j 2.x. 在log4j中有一些appender,你可以清楚地定义你的日志文件的名称以及log4j必须在哪里部署它等等......

如果要动态设置它,则必须通过程序或其他任何方式重写log4j.xml。

以下是使用FileAppender

的设置文件片段
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
  <Appenders>
    <File name="MyFile" fileName="logs/anameyouwant.log" append="true">
      <PatternLayout>
        <Pattern>%d{HH:mm:ss.SSS} [%-5level] %msg [%t] %logger{30} %n</Pattern>
      </PatternLayout>
    </File>
  </Appenders>
  <Loggers>
    <Root level="all">
      <AppenderRef ref="MyFile"/>
    </Root>
  </Loggers>
</Configuration> 

在本例中,我使用FileAppender将日志写入/logs/anameyouwant.log。它将信息附加到日志文件。 这是你必须动态重写的部分:fileName="logs/anameyouwant.log" 我没有看到解决问题的其他方法,除了这个解决方案,你在运行程序之前重新开始设置文件并开始记录。

这可能是一些有用的链接:

Appenders of Log4j

A DailyRollingFileAppender