Pur*_*aik 6 error-logging nlog .net-core asp.net-core
我NLog用于在.net核心中记录消息.
我加入NLog的StartUp.cs,如下所示:
loggerFactory.AddNLog();
Run Code Online (Sandbox Code Playgroud)
要记录到文件,我使用以下方法:
logger.LogInformation("Message");
Run Code Online (Sandbox Code Playgroud)
我想在我的消息中添加自定义NLog事件属性.但是LogInformation()不允许我传递它.我怎样才能做到这一点?
如果要自定义布局属性(NLog称其为布局渲染器),则可以使用EventProperties布局渲染器。您可以在代码中简单地做到这一点:
var logger = LogManager.GetCurrentClassLogger();
var eventInfo = new LogEventInfo(LogLevel.Info, logger.Name, "Message");
eventInfo.Properties["CustomValue"] = "My custom string";
eventInfo.Properties["CustomDateTimeValue"] = new DateTime(2020, 10, 30, 11, 26, 50);
// You can also add them like this:
eventInfo.Properties.Add("CustomNumber", 42);
// Send to Log
logger.Log(eventInfo);
Run Code Online (Sandbox Code Playgroud)
然后,您将能够在nlog.config中添加这些(您组成的任何属性)
<target>
<parameter name="@customtime" layout="${event-properties:CustomDateTimeValue:format=yyyy-MM-dd HH\:mm\:ss}" />
<parameter name="@customvalue" layout="${event-properties:item=CustomValue}" />
<parameter name="@customnumber" layout="${event-properties:item=CustomNumber}" />
</target>
Run Code Online (Sandbox Code Playgroud)
当将NLog与AspNetCore一起使用时,为ASP.NET Core添加NLog.Web软件包很有用,它为您提供了许多预定义的布局渲染器。您可以在其Github页面上找到有关NLog.Web for AspNetCore的更多信息。
这个AspNetCore软件包将为您提供以下内容:
<parameter name="@UserName" layout="${aspnet-user-identity}" />
<parameter name="@MvcAction" layout="${aspnet-MVC-Action}" />
<parameter name="@Session" layout="${aspnet-session:Variable=User.Name:EvaluateAsNestedProperties=true}" />
... etc
Run Code Online (Sandbox Code Playgroud)
您可以在NLog.Web.AspNetCore Github页面上找到完整列表。
| 归档时间: |
|
| 查看次数: |
5371 次 |
| 最近记录: |