gpt4 book ai didi

java - 如何以编程方式在 log4j 中为 RollingFileAppender 指定文件名?

转载 作者:行者123 更新时间:2023-12-05 07:57:35 25 4
gpt4 key购买 nike

背景:

我的应用程序允许从 GUI 中选择两种操作模式。
如果它作为服务器运行,我想将日志定向到 server.log 文件中。
如果它作为客户端运行,我想将日志定向到 client.log 文件中。

问题:

How to programmingly specify different names for different modes for RollingFileAppender in log4j?

已添加(2014 年 10 月 29 日):@Manish Maheshwari 的当前答案对我不起作用。它引发警告 log4j:WARN File option not set for appender [file] 并且它不会将日志写入文件。


我的尝试:

我定义了 RoleSpecificRollingFileAppender 类,它扩展了 RollingFileAppender 并覆盖了 setFile() 方法。

public class RoleSpecificRollingFileAppender extends RollingFileAppender {
@Override
public void setFile(String fileName) {
super.setFile(fileName);
}
}

我的RollingFileAppender如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//LOGGER" "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">

<log4j:configuration>
# Root logger option
log4j.rootLogger=INFO, file

# Direct log messages to a log file
log4j.appender.file=[[What to do here? org.apache.log4j.RollingFileAppender]]
log4j.appender.file.File = [[I don't know how to do here.]]
log4j.appender.file.MaxFileSize=50MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm} %-5p %c{1}:%L - %m%n
</log4j:configuration>

但是我不知道在 Java 代码和 log4j.properties 文件中做什么。

最佳答案

log4j.appender.file 属性中使用 RoleSpecificRollingFileAppender 的完全限定类名。尝试从配置中删除文件行。

在 Bootstrap 中使用它:

RollingFileAppender app = new RoleSpecificRollingFileAppender();
app.setFile(myfile);
BasicConfigurator.configure(app);

关于java - 如何以编程方式在 log4j 中为 RollingFileAppender 指定文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26600316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com