[英]How to programmatically specify the file name for RollingFileAppender in log4j?
Background: 背景:
My application allows two operating modes that can be chosen from a GUI. 我的应用程序允许从GUI中选择两种操作模式。
If it operates as a server, I want to direct the logs into the server.log
file. 如果它作为服务器运行,我想将日志定向到server.log
文件中。
If it operates as a client, I want to direct the logs into the client.log
file. 如果它作为客户端运行,我想将日志定向到client.log
文件中。
Question: 题:
How to programmingly specify different names for different modes for RollingFileAppender in log4j? 如何在log4j中为RollingFileAppender的不同模式以编程方式指定不同的名称?
Added (10-29-2014): The current answer by @Manish Maheshwari does not work for me. 添加(10-29-2014): @Manish Maheshwari的当前答案对我不起作用。 It raises the warning log4j:WARN File option not set for appender [file]
and it does not write logs into file. 它将引发警告log4j:WARN File option not set for appender [file]
,并且未将日志写入文件。
My attempt: 我的尝试:
I define RoleSpecificRollingFileAppender
class which extends RollingFileAppender
and overrides the setFile()
method. 我定义了RoleSpecificRollingFileAppender
类,该类扩展了RollingFileAppender
并覆盖了setFile()
方法。
public class RoleSpecificRollingFileAppender extends RollingFileAppender {
@Override
public void setFile(String fileName) {
super.setFile(fileName);
}
}
My RollingFileAppender
is as follows: 我的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>
However I don't know what to do in Java code and the log4j.properties
file. 但是我不知道在Java代码和log4j.properties
文件中该怎么做。
Use the fully qualified classname for RoleSpecificRollingFileAppender
in log4j.appender.file
property. 在log4j.appender.file
属性中为RoleSpecificRollingFileAppender
使用完全限定的类名。 Try removing the File line from config. 尝试从配置中删除文件行。
Use this at bootstrap: 在引导程序上使用此命令:
RollingFileAppender app = new RoleSpecificRollingFileAppender();
app.setFile(myfile);
BasicConfigurator.configure(app);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.