我想知道如何使用Log4net .My应用程序动态分配文件名,以便根据用户输入动态创建10个不同的文件,然后根据名称提取相应的文件名并向其中写入信息
例如,在我的应用程序中,根据我对每个xml文件的业务需求,应该创建一个与xml文件同名的相应日志文件,每当我对xml文件进行任何修改时,.Later都需要在相应的日志文件中有一个条目。
请帮帮忙。我很难控制适当的日志来写入它。
发布于 2009-07-23 11:03:09
我还没有做到这一点,但是可能有很多方法可以做到这一点,所以这可能不是最好的方法,但它应该可以工作。
public OpenLogFile(string fileName)
{
log4net.Layout.ILayout layout = new log4net.Layout.PatternLayout("%d [%t]%-5p : - %m%n");;
log4net.Appender.FileAppender appender = new log4net.Appender.FileAppender(layout , filename);
appender.Threshold = log4net.Core.Level.Info;
log4net.Config.BasicConfigurator.Configure(appender);
}
然后,当您需要切换文件时,只需调用OpenLogfile。
您可能需要调整布局或附加器类型。
这种方法的一大缺点是失去了xml配置和在运行时更改设置的能力。因此,更好的方法可能是在xml文件中配置附加器以使用属性
例如
file type="log4net.Util.PatternString" value="Logfiles\Log_For_%property{MyLogFileName}"
然后,您可以在代码中更改该属性
log4net.GlobalContext.Properties["MyLogFileName"] = ...;
棘手的一点是让log4net自己重新加载。我还没有读过这方面的文档,所以我不知道是否有强制重新加载的方法。如果您只需再次调用log4net.Config.XmlConfigurator.ConfigureAndWatch,它可能会起作用。否则,如果您打开xml文件并再次保存它(不需要更改任何内容),它应该可以工作
希望这能有所帮助。
https://stackoverflow.com/questions/1164995
复制相似问题