我有一个带有区域的ASP MVC项目,我必须将异常记录到数据库中。但我有一个问题。我必须将每个区域的日志异常写入数据库中自己的表。我有一个想法是为DataTargets
与表名相关的所有区域配置CommandText
,但它看起来很难看。更奇妙的方法是通过某个工厂启动应用程序的所有区域并构建目标。
有人对此问题有任何想法或最佳做法吗?
答案 0 :(得分:3)
数据库目标的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