我有一个带有区域的ASP MVC项目,我必须将异常记录到数据库中.但是我有一个问题.我必须将每个区域的日志异常写入数据库中自己的表中.我有一个想法,要为与表名相关的CommandText为所有区域配置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