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



我使用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:LogsWcfLibrary.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":"/LM/W3SVC/2/ROOT-1-132599327970820414","logger":"Service","logData":{"Message":"Service started","ClassName":"Utils","MethodName":"Start"}}

预期日志为:

{"logDateTime":"2021-03-11","hostName":"PC","level":"DEBUG","appname":"CarService","logger":"Service","logData":{"Message":"Service started","ClassName":"Utils","MethodName":"Start"}}

查看log4net中的各种上下文对象。您可以在第一次日志记录调用之前(可能在构造函数中或初始化期间(设置此项。它将在线程调用的整个生命周期中持续存在,只有当您在线程之外时,才需要再次设置它。如果你已经为你的记录器实现了一个包装器库,你也可以根据你公开的一些参数在那里设置它。

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

在设置好之后,您应该能够引用";appname";在您的appender配置或映射中。

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

最新更新