c# - NLog via LINQPad - 将配置文件放在哪里?

标签 c# .net nlog linqpad

我正在尝试在 LINQPad 下测试 NLog。

我成功地链接了它并且我的代码编译得很好。但是,NLog 不会写入日志文件,因为它没有配置。

我尝试制作各种配置文件,如:NLog.configLINQPad.config,但看起来我做的不正确。

我在LINQPad下的测试代码是:

void Main()
{
    try
    {
        int zero = 0;
        int result = 5 / zero;
    }
    catch (DivideByZeroException ex)
    {
        Logger logger = LogManager.GetCurrentClassLogger();
        logger.ErrorException("Whoops!", ex);
    }
}

配置代码:

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

    <targets>
        <target name="logfile" xsi:type="File" fileName="logfile.log" />
    </targets>

    <rules>
        <logger name="*" minlevel="Info" writeTo="logfile" />
    </rules>
</nlog>

配置文件放在哪里?

最佳答案

您可以使用 LinqPad 的扩展来启用日志记录:您将放入 My Extensions 脚本的所有内容都将可用于所有其他脚本。

My Extensions 添加一个类,内容为:

public static class NLogLinqPadExtensions
{
    public static void ConfigureLogging()
    {
                var nlogConfig = @"
<nlog>
    <targets>
    <target name='console' type='Console' layout='${date:format=dd/MM/yy HH\:mm\:ss\:fff} | ${level:uppercase=true} | ${message} | ${exception:format=tostring}' />
    </targets>
    <rules>
    <logger name='*' minlevel='Debug' writeTo='console' />
    </rules>
</nlog>
        ";

        using (var sr = new StringReader(nlogConfig))
        {
            using (var xr = XmlReader.Create(sr))
            {
                NLog.LogManager.Configuration = new XmlLoggingConfiguration(xr, null);
                NLog.LogManager.ReconfigExistingLoggers();
            }
        }
    }
}

并且不要忘记将 NLog 包添加到此脚本中。

此示例配置控制台记录器 - 您将在 LinqPad 的结果窗口中看到您的日志消息,这对于长时间运行的进程和实用程序脚本来说非常酷。

要启用日志记录,您必须从脚本中调用此扩展。创建一个新的 LinqPad 脚本并试试这个:

NLogLinqPadExtensions.ConfigureLogging();

var logger = LogManager.GetLogger("Foo");
logger.Debug("Hi");

关于c# - NLog via LINQPad - 将配置文件放在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24024336/

相关文章:

c# - 每次应用程序运行时如何在数据库中播种特定值?

c# - 有没有办法在 C# 中切换 boolean 变量?

c# - 如何将 A<T> 类型的泛型对象转换为 A<T'>?

windows - 作为计划任务运行时,NLog 环境布局渲染器不起作用

c# - 跨AppDomains的NLog配置

c# - Dotnet Nlog Mail 目标粗体 Html 文本

c# - 发送带有送货回执的邮件?

c# - 将 DataTable 绑定(bind)到 GridView 的模板字段

c# - WCF Windows 服务 - 长操作/回调调用模块

c# - 参数类型 'A' 不能分配给类型 'B'?