gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 18:14:54 25 4
gpt4 key购买 nike

我正在尝试在 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/

25 4 0