我们使用NLog进行基于文件的正常配置。
在共享程序集中,无论一些使用者如何配置其日志记录,我们都需要跟踪数据库中的特定条目。因此,在应用程序启动时,除了现有配置之外,我们还通过代码配置数据库目标,如下所示:
var logger = LogManager.GetLogger("dummy"); // make sure NLog loads config files first
var dbTarget = new DatabaseTarget() {
ConnectionString = connStr,
CommandText = cmdInsertText,
}
dbTarget.Parameters.Add(new DatabaseParameterInfo() { Name = "@logged", Layout = "${date}" });
// some other params
LogManager.Configuration.AddTarget("_db", dbTarget);
LogManager.Configuration.LoggingRules.Add(new LoggingRule("Our.SpecificValues.*", LogLevel.Trace, dbTarget);
LogManager.ReconfigExistingLoggers();
我们确保此初始化代码只运行一次。
我们的问题:我们记录的每个条目在数据库中出现多次(有时只有两次,但我看到一个条目被写入数据库6次)。 NLog内部日志显示该语句多次执行,但我无法在日志中找到原因。其他配置(文件)目标只写入一次。
问题。我怎么能弄清楚,为什么这个条目被多次写入数据库,或者我只需要将它写入数据库一次?