NLog:语法添加数据库目标(使用AddTarget)

时间:2019-03-25 04:48:43

标签: nlog

我将多线程C#与.NET控制台应用程序配合使用,目前我使用NLog记录文件和数据库。我写几个不同的日志文件,具体取决于哪个“存储”处理事务。为此,我添加了file targets

        var targetFileName = Path.Combine(Path.GetDirectoryName(fileName),
            string.Format("{0}-{1}{2}", Path.GetFileNameWithoutExtension(fileName), name, Path.GetExtension(fileName)));
        var target =
            new FileTarget
            {
                FileName = targetFileName,
                Layout = @"${date:format=yyyy-MM-dd HH\:mm\:ss.fff}|${level}|${threadid}|${logger}|${event-properties:item=StoreID}|${message}${exception:format=tostring}"
            };

        //Add async wrapper here
        var asyncWrapper = new AsyncTargetWrapper
        {
            WrappedTarget = target,
            QueueLimit = 20000,
            OverflowAction = AsyncTargetWrapperOverflowAction.Discard
        };
        //Create rule
        var rule = new LoggingRule(name, LogLevel.Trace, asyncWrapper);
        LogManager.Configuration.LoggingRules.Add(rule);
        //Add target
        LogManager.Configuration.AddTarget(name, asyncWrapper);
        //Tell logmanager to reconfigure itself
        LogManager.ReconfigExistingLoggers();

然后我可以使用LogManager.GetLogger(name)来检索记录器。

在我的NLog.config中,我还登录到数据库<target name="Database" xsi:type="Database">

我每天运行我的应用程序并关闭它。使用文件目标,我每天可以通过创建一个新的FileTarget轻松地创建文件。

是否可以对数据库执行相同的操作?当然,需要使用一些初始化代码来创建它...但是除了“文件”目标外,我看不到任何文档。

理想情况下,每天(每次运行)我都会创建一个新数据库,并用文件名表示运行的日期(就像我上面对FileTarget所做的一样)。

1 个答案:

答案 0 :(得分:0)

NLog中的所有内容都可以通过配置文件(nlog.config)和代码进行配置。

为此,您需要DatabaseTarget(命名空间NLog.Targets)。

属性的名称确实与XML属性匹配,因此文档在这里:Database target

小例子:

var config = new LoggingConfiguration();
config.AddRuleForAllLevels(new DatabaseTarget()
{
    ConnectionString = "MyConnectionString",
    CommandText = "INSERT .... ", //todo
    Parameters =
    {
        new DatabaseParameterInfo("@message", "${message}"),
        new DatabaseParameterInfo("@error", "${exception}"),
        new DatabaseParameterInfo("@date", "${date}"){ DbType = "DbType.Date"},
    }
});
LogManager.Configuration = config; // Apply config
相关问题