Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.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 ext json配置自定义Appname_C#_.net_Log4net_Log4net Configuration_Log4net Ext Json - Fatal编程技术网

C# 在日志中为log4net ext json配置自定义Appname

C# 在日志中为log4net ext json配置自定义Appname,c#,.net,log4net,log4net-configuration,log4net-ext-json,C#,.net,Log4net,Log4net Configuration,Log4net Ext Json,我使用log4net.ext.json登录wcf类库,但没有exe。但是,我想给appname一些别名,例如CarService,而不是/LM/W3SVC/2/ROOT-1-132599327970820414。我如何配置它 当前配置: <log4net> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">

我使用log4net.ext.json登录wcf类库,但没有exe。但是,我想给appname一些别名,例如CarService,而不是/LM/W3SVC/2/ROOT-1-132599327970820414。我如何配置它

当前配置:

<log4net>
  <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <encoding value="UTF-8" type="System.Text.UTF8Encoding" />
    <file type="log4net.Util.PatternString" value="C:\Logs\WcfLibrary.log" name ="RollingLogFileAppender" />
    <appendToFile value="true" />
    <rollingStyle value="Date" />
    <countDirection value="-1"/>
    <datePattern value="yyyy-MM-dd"/>
    <logName value="Myapp" />
    <applicationName value="BmwService" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.SerializedLayout, log4net.Ext.Json">
      <member value="logDateTime%date:yyyy-MM-dd HH:mm:ss:ffff" />
      <decorator type="log4net.Layout.Decorators.StandardTypesDecorator, log4net.Ext.Json" />
      <member value="hostName" />
      <default />
      <remove value="date" />
      <remove value="ndc" />
      <remove value="message" />
      <remove value="thread" />
      <remove value="exception" />
      <member value="logData:messageObject" />
    </layout>
  </appender>
  <root>
    <level value="All"/>
    <appender-ref ref="RollingLogFileAppender"/>
  </root>
</log4net>
预期日志为:

{"logDateTime":"2021-03-11","hostName":"PC","level":"DEBUG","appname":"CarService","logger":"Service","logData":{"Message":"Service started","ClassName":"Utils","MethodName":"Start"}}
看看各种各样的。您应该在第一次日志调用之前(可能在构造函数中,或在初始化期间)设置此参数。它将在线程调用的整个生命周期内持续存在,只有在线程之外时才需要重新设置它。如果您已经为记录器实现了一个包装器库,那么还可以根据您公开的一些参数在那里设置它

ThreadContext.Properties["appname"] = "CarService"
设置好后,您应该能够在appender配置或映射中引用“appname”

此外,如果您试图获取应用程序的实际名称,并且已将其镜像到IIS站点名称中,则可以使用“HostingEnvironment.SiteName”传递到线程上下文中

ThreadContext.Properties["appname"] = "CarService"