我一直在尝试构建一个使用NLog记录文件的应用程序。代码非常基本,但似乎不起作用。有人有主意吗?我已将正确的事情设置为"始终复制"同样,就像这个问题一样。 NLog doen't work on IIS
以下代码。
MAIN(包括使用陈述来表明我实际上正在使用它们)
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Configuration;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using NLog;
class Program
{
static void Main(string[] args)
{
var logger = LogManager.GetCurrentClassLogger();
logger.Debug("xxxx");
}
NLog.Config
<?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="file" xsi:type="File"
layout="${longdate} ${logger} ${message}"
fileName="${basedir}/log/logfile.txt" />
</targets>
<rules>
<logger name="*" minlevel="Debug" writeTo="file" />
</rules>
</nlog>
的App.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<runtime>
<assemblyBinding>
<dependentAssembly>
<assemblyIdentity name="NLog" publicKeyToken="5120e14c03d0593c" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.2.1.0" newVersion="3.2.1.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
答案 0 :(得分:1)
您是否从GetCurrentClassLogger调用中获得了有效的记录器?
您是否尝试启用内部调试,如下所示: https://github.com/NLog/NLog/wiki/Internal-Logging
这应指向正确的方向,指出未创建日志文件的原因
答案 1 :(得分:1)
检查您的流程是否具有${basedir}
位置的写入权限。此外,如果您的应用程序是从特殊文件夹运行,请确保该进程正在升级。
答案 2 :(得分:0)
如果要从Visual Studio调试,请尝试以提升的帐户(以管理员身份运行)运行VS,然后开始调试。这样NLog将具有足够的权限来创建日志文件。
还要对nlog配置文件中的每个目标部分使用createDirs = true,以在目标部分提供的日志文件路径中自动创建丢失的文件夹。