我有一个文件,它根据传递给它的命令行参数向不同的移动网络发送短信。 Vodafone、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.properties 文件中定义的文件。所以,我很困惑在 log4j.properties 中写什么以及在这个 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.properties 文件中写入以下内容。所有日志都写入此属性中定义的network.log 文件..这不符合我的要求。我需要在 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
请提出建议。
提前致谢。
最佳答案
您需要创建不同的附加程序才能实现目标。 尝试这个配置:
<appender name="3Network" class="org.apache.log4j.FileAppender">
<param name="file" value="logs/3Network.log" />
<param name="append" value="true" />
</appender>
<appender name="Vodafone" class="org.apache.log4j.FileAppender">
<param name="file" value="logs/Vodafone.log" />
<param name="append" value="true" />
</appender>
<appender name="TMobile" class="org.apache.log4j.FileAppender">
<param name="file" value="logs/TMobile.log" />
<param name="append" value="true" />
</appender>
同样可以写成:
log4j.appender.TMobile=org.apache.log4j.FileAppender
log4j.appender.TMobile.File=logs/TMobile.log..
等等..
希望这能帮助您解决问题。 另请参阅此 - reference
关于用于单独程序参数的 Java 单独日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12766681/