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

NLog. Write logs into different tables

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

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

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

<target xsi:type="Database"
      name="db"
      commandText="insert into ${event-properties:tablename} ... ">

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

logger.Info().Message("this is a message").Property("tablename", "table1").Write();

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