日志。将日志写入不同的表

use*_*018 5 c# database asp.net-mvc logging nlog

我有一个带有区域的 ASP MVC 项目,我必须将异常记录到数据库中。但我有一个问题。我必须将每个区域的日志异常写入数据库中自己的表。我有一个想法DataTargets为所有CommandText与表名相关的区域进行配置,但它看起来很丑陋。一种更奇妙的方法是通过一些工厂启动应用程序的所有区域并构建目标。

有人对此问题有任何想法或最佳做法吗?

Jul*_*ian 5

CommandText数据库目标的属性是一个布局,所以你可以这样做:

<target xsi:type="Database"
      name="db"
      commandText="insert into ${event-properties:tablename} ... ">
Run Code Online (Sandbox Code Playgroud)

并使用流畅的风格(NLog.Fluent 命名空间):

logger.Info().Message("this is a message").Property("tablename", "table1").Write();
Run Code Online (Sandbox Code Playgroud)

您还可以使用更多全局上下文,如 GDC、MDC 等。请参阅NLog Wiki