Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# log4net logz.io appender配置文件将参数传递给listenerUrl和令牌标记_C#_.net Core_Log4net_Logz.io - Fatal编程技术网

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

C# log4net logz.io appender配置文件将参数传递给listenerUrl和令牌标记,c#,.net-core,log4net,logz.io,C#,.net Core,Log4net,Logz.io,要将项目设置为在多个环境中运行并使用logz.io,我需要根据构建定义设置不同的令牌和listenerUrl值。该项目设置了log4net.config文件,其思想是使用log4net globalcontext属性传递值,就像我对布局模式标记所做的一样。不幸的是,log4net保留了这些属性名(占位符),并没有用globalcontext中的值替换它们 我的问题是如何动态设置这些标记 我试过的东西是: 配置中的属性。 以编程方式获取根追加器和设置值: var rootAppender=LogM

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

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

我试过的东西是:

  • 配置中的属性。
  • 以编程方式获取根追加器和设置值:
    var rootAppender=LogManager.GetRepository(Assembly.GetEntryAssembly()).GetAppenders().OfType()
  • 创建新的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>
    
    
    log4net
    100
    00:00:05
    3.
    00:00:02
    假的
    
    由于某种原因,我尝试的第2个选项在第一次尝试时不起作用。 此代码完成作业并覆盖log4net配置文件:

    var logzioAppender = LogManager.GetRepository(Assembly.GetEntryAssembly()).GetAppenders().OfType<LogzioAppender>();
    logzioAppender.FirstOrDefault().AddListenerUrl("https://listener_url:8071");
    logzioAppender.FirstOrDefault().AddToken("key_value");
    
    var logzioAppender=LogManager.GetRepository(Assembly.GetEntryAssembly()).GetAppenders().OfType();
    logzioAppender.FirstOrDefault().AddListenerUrl(“https://listener_url:8071");
    logzioAppender.FirstOrDefault().AddToken(“key_值”);
    
    由于某种原因,我尝试的第2个选项在第一次尝试时不起作用。 此代码完成作业并覆盖log4net配置文件:

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