log4net logz.io appender 配置文件将参数传递给 listenerUrl 和令牌标记



要将项目设置为在多个环境中运行并使用 logz.io 我需要根据构建定义设置不同的令牌和侦听器Url值。项目设置了log4net.config文件,想法是使用log4net globalcontext属性来传递值,就像我对布局模式标签所做的那样。不幸的是,log4net保留了这些属性名称(占位符(,并且不会用全局上下文中的值替换它们。

我的问题是如何动态设置这些标签?

我尝试过的东西是:

  1. 配置中的属性。
  2. Geting 根追加器和编程设置值:
    var rootAppender = LogManager.GetRepository(Assembly.GetEntryAssembly()).GetAppenders().OfType<LogzioAppender>();
  3. 创建新的追加器对象并将其添加到hierarchy.Root.AddAppender(logzioAppender);

配置看起来几乎是默认的,就像 logz.io 文档中一样。

<log4net>
<appender name="LogzioAppender" type="Logzio.DotNet.Log4net.LogzioAppender, Logzio.DotNet.Log4net">
<token value="%p{token}" />
<type>log4net</type>
<listenerUrl value="%p{listenerhost}:8071" />
<bufferSize>100</bufferSize>
<bufferTimeout>00:00:05</bufferTimeout>
<retriesMaxAttempts>3</retriesMaxAttempts>
<retriesInterval>00:00:02</retriesInterval>
<debug>false</debug>
</appender>
<root>
<level value="INFO" />
<appender-ref ref="LogzioAppender" />
</root>
</log4net>

由于某种原因,我尝试过的选项 2 在第一次尝试时不起作用。 此代码完成工作并覆盖 log4net 配置文件:

var logzioAppender = LogManager.GetRepository(Assembly.GetEntryAssembly()).GetAppenders().OfType<LogzioAppender>();
logzioAppender.FirstOrDefault().AddListenerUrl("https://listener_url:8071");
logzioAppender.FirstOrDefault().AddToken("key_value");

相关内容

  • 没有找到相关文章

最新更新