C# 通过LINQPad进行NLog-将配置文件放在何处?
我想在LINQPad下测试NLog 我成功地链接了它,我的代码编译得很好。但是,NLog不会写入日志文件,因为它没有配置 我试图创建各种配置文件,如:C# 通过LINQPad进行NLog-将配置文件放在何处?,c#,.net,nlog,linqpad,C#,.net,Nlog,Linqpad,我想在LINQPad下测试NLog 我成功地链接了它,我的代码编译得很好。但是,NLog不会写入日志文件,因为它没有配置 我试图创建各种配置文件,如:NLog.config和LINQPad.config,但看起来我做得不正确 我在LINQPad下的测试代码是: void Main() { try { int zero = 0; int result = 5 / zero; } catch (DivideByZeroException
NLog.config
和LINQPad.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>
将配置文件放在哪里?多亏了@pasty和@nemesv的注释,问题得到了解决 配置文件必须命名为NLog.config,并且必须放在LINQPad.exe文件夹中 日志文件(
logfile.log,在我的例子中为
)显示在同一文件夹中
LINQPad需要对文件夹具有写访问权限才能写入日志文件
设置配置文件后,必须重新启动LINQPad
[编辑]
如果启动LINQPad、加载或写入代码并运行它,日志文件将显示在LINQPad.exe文件夹中
在我的例子中,如果您通过单击保存的代码文件(如
NLog Test.linq
)来运行代码,那么日志文件将显示在代码文件的文件夹中。(C:\Users\Miroslav\Documents\LINQPad querys
在我的例子中)您可以使用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,但使用现有配置文件:
public static void ConfigureNLog()
{
LogManager.Configuration = new XmlLoggingConfiguration(@"C:\path\to\existing\config\file\NLog.xml");
LogManager.ReconfigExistingLoggers();
}
您需要将以下内容添加到LINQPad查询的命名空间导入中:
NLog
NLog.Config
如果您复制LINQPad.exe旁边的
nlog.config
,并且LINQPad.exe还具有对其文件夹的写访问权限,那么本文可能会帮助您:。您的代码和配置工作正常。因此,如果运行LINQPad.exe,则需要以管理员身份运行或配置Nlog以将日志文件放在其他位置.Hmm。必须重新启动LINQPad才能读取配置文件。然而,到目前为止,这还不是一个解决方案。LINQPad有自己的LINQPad.exe.config
。我在其中添加了NLog标记,但它不起作用。如果我只使用NLog标记创建一个单独的LINQPad.config
,LINQPad会警告说找不到它的
标记。@nemesv,你的解决方案有效!问题是我没有重新启动LINQPad。非常有帮助;我能够在IPython中实现这项技术,从工作目录加载配置文件。
NLog
NLog.Config