首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >log4网动态文件名赋值

log4网动态文件名赋值
EN

Stack Overflow用户
提问于 2009-07-22 12:44:33
回答 1查看 2K关注 0票数 1

我想知道如何使用Log4net .My应用程序动态分配文件名,以便根据用户输入动态创建10个不同的文件,然后根据名称提取相应的文件名并向其中写入信息

例如,在我的应用程序中,根据我对每个xml文件的业务需求,应该创建一个与xml文件同名的相应日志文件,每当我对xml文件进行任何修改时,.Later都需要在相应的日志文件中有一个条目。

请帮帮忙。我很难控制适当的日志来写入它。

EN

回答 1

Stack Overflow用户

发布于 2009-07-23 11:03:09

我还没有做到这一点,但是可能有很多方法可以做到这一点,所以这可能不是最好的方法,但它应该可以工作。

代码语言:javascript
运行
复制
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文件中配置附加器以使用属性

例如

代码语言:javascript
运行
复制
file type="log4net.Util.PatternString" value="Logfiles\Log_For_%property{MyLogFileName}"  

然后,您可以在代码中更改该属性

代码语言:javascript
运行
复制
log4net.GlobalContext.Properties["MyLogFileName"] =  ...;

棘手的一点是让log4net自己重新加载。我还没有读过这方面的文档,所以我不知道是否有强制重新加载的方法。如果您只需再次调用log4net.Config.XmlConfigurator.ConfigureAndWatch,它可能会起作用。否则,如果您打开xml文件并再次保存它(不需要更改任何内容),它应该可以工作

希望这能有所帮助。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1164995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档