【问题标题】:log4net logz.io appender config file pass parameter to listenerUrl and token tagslog4net logz.io appender 配置文件将参数传递给 listenerUrl 和 token 标签
【发布时间】:2019-11-26 14:50:06
【问题描述】:

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

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

我尝试过的东西是:

  1. 配置中的属性。
  2. 以编程方式获取根附加程序并设置值: var rootAppender = LogManager.GetRepository(Assembly.GetEntryAssembly()).GetAppenders().OfType<LogzioAppender>();
  3. 创建新的 Appender 对象并将其添加到 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>

【问题讨论】:

    标签: c# .net-core log4net logz.io


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-09
      • 1970-01-01
      • 1970-01-01
      • 2013-07-28
      相关资源
      最近更新 更多