gpt4 book ai didi

c# - 如何在 log4net appender 名称中使用 GlobalContext 属性?

转载 作者:IT王子 更新时间:2023-10-29 03:57:24 25 4
gpt4 key购买 nike

我正在尝试自定义 log4net 文件路径以使用我在 log4net.GlobalContext.Properties 字典中设置的属性。

log4net.GlobalContext.Properties["LogPathModifier"] = "SomeValue";

通过调试可以看到这个值设置正确。然后在我的配置中

<file type="log4net.Util.PatternString" 
value="Logs\%appdomain_%property{LogPathModifier}.log" />

但是,它的输出在路径末尾给出了“_(null).log”。给了什么?

最佳答案

我遇到了相同的行为并通过在调用 XmlConfigurator 之前设置全局变量来解决它...这是我成功使用的内容:

log4net.config 详细信息:

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
<File type="log4net.Util.PatternString" value="App_Data/%property{LogName}" />
...
</appender>

Global.asax 详细信息:

private static readonly log4net.ILog log = log4net.LogManager.GetLogger("Global.asax");
void Application_Start(object sender, EventArgs e)
{
// Set logfile name and application name variables
log4net.GlobalContext.Properties["LogName"] = GetType().Assembly.GetName().Name + ".log";
log4net.GlobalContext.Properties["ApplicationName"] = GetType().Assembly.GetName().Name;

// Load log4net configuration
System.IO.FileInfo logfile = new System.IO.FileInfo(Server.MapPath("log4net.config"));
log4net.Config.XmlConfigurator.ConfigureAndWatch(logfile);

// Record application startup
log.Debug("Application startup");
}

希望这有助于...

关于c# - 如何在 log4net appender 名称中使用 GlobalContext 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/562108/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com