为单独的程序参数记录单独的Java日志文件
我有一个文件,它根据传递给它的命令行参数向不同的移动网络发送SMS。沃达丰,3网络,T-Mobile,O2。。所以,当辩论通过时
$Run SMSDaemon 3Network // sends sms to 3 networks's mobile users
$Run SMSDaemon Vodafone // sends sms to Vodafone mobile users
$Run SMSDaemon TMobile // sends sms to TMobile mobile users
$Run SMSDaemon O2 // sends sms to O2 mobile users
现在,我想为单独的网络创建一个单独的日志文件,这样我就可以根据移动网络分别拥有日志信息、调试消息
因为,我只有一个文件SMSDaemon,所以我尝试了以下方法,但它没有向文件写入任何内容。它只写入log4j中定义的文件。属性文件。所以,我不知道在log4j中写什么。属性以及在这个java文件中写什么
public static void main(String[] args) {
if( args.length != 1 { return;}
networkUnique = args[0];
setLogProps(networkUnique);
//other codes and in setLogProps method
private static void setLogProps(String networkUnique)
{
log = Logger.getLogger(networkUnique);
Properties logprops=new Properties();
logprops.setProperty("log4j.appender.file","org.apache.log4j.FileAppender");
logprops.setProperty("log4j.appender.file.maxFileSize","300MB");
logprops.setProperty("log4j.appender.file.maxBackupIndex","100");
logprops.setProperty("log4j.appender.file.File","/etc/sms/"+networkUnique+".log");
logprops.setProperty("log4j.appender.file.threshold","debug");
logprops.setProperty("log4j.appender.file.layout","org.apache.log4j.PatternLayout");
logprops.setProperty("log4j.appender.file.layout.ConversionPattern","%d [%t] %-5p [%-35F : %-25M : %-6L] %-C -%m%n");
logprops.setProperty("log4j.appender.stdout","org.apache.log4j.FileAppender");
PropertyConfigurator.configure(logprops);
log.info("Log message Starting for "+ networkUnique);
}
在log4j中。写入以下属性文件。所有日志都写入网络。在此属性中定义的日志文件。。这不符合我的要求。我需要在SMSDaemon setLogProps方法中定义的单独网络的单独日志
# Define the root logger with appender file
#log = /etc/sms/
log4j.rootLogger = info, FILE
# Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
#log4j.appender.FILE.File=${log}/network.log
# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n
请建议
提前谢谢
# 1 楼答案
您需要创建不同的附加器来实现目标。 请尝试以下配置:
您可以编写的内容与以下内容相同:
等等
希望这将帮助您解决您的问题。 另见此-reference
# 2 楼答案
我建议根据您的网络创建不同的
Logger
类,例如然后更新
log4j.properties
,如下所示:如果你不想,根记录器,关闭它