NLog文件不写
NLog file not writing
我一直在尝试构建一个将使用 NLog 记录文件的应用程序。该代码非常基本,但似乎不起作用。谁有想法?我也将正确的东西设置为 "copy always" ,就像在这个问题中一样。 NLog doen't work on IIS
下面的代码。
MAIN(包括显示我实际使用它们的 using 语句)
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>
您是否从 GetCurrentClassLogger 调用中获得了有效的记录器?
您是否尝试过打开内部调试,如下所示:
https://github.com/NLog/NLog/wiki/Internal-Logging
这应该为您指出正确的方向,说明为什么没有创建您的日志文件
检查您的进程是否具有对 ${basedir}
位置的写入权限。此外,如果您的应用程序 运行 来自特殊文件夹,请确保进程已 运行 提升。
如果您尝试从 Visual studio 进行调试,请尝试在提升的帐户(运行 以管理员身份)中 运行 VS,然后开始调试。这样 NLog 将有足够的权限来创建日志文件。
还对 nlog 配置文件中的每个目标部分使用 createDirs=true,以在目标部分提供的日志文件路径中自动创建丢失的文件夹。
我一直在尝试构建一个将使用 NLog 记录文件的应用程序。该代码非常基本,但似乎不起作用。谁有想法?我也将正确的东西设置为 "copy always" ,就像在这个问题中一样。 NLog doen't work on IIS
下面的代码。
MAIN(包括显示我实际使用它们的 using 语句)
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>
您是否从 GetCurrentClassLogger 调用中获得了有效的记录器?
您是否尝试过打开内部调试,如下所示: https://github.com/NLog/NLog/wiki/Internal-Logging
这应该为您指出正确的方向,说明为什么没有创建您的日志文件
检查您的进程是否具有对 ${basedir}
位置的写入权限。此外,如果您的应用程序 运行 来自特殊文件夹,请确保进程已 运行 提升。
如果您尝试从 Visual studio 进行调试,请尝试在提升的帐户(运行 以管理员身份)中 运行 VS,然后开始调试。这样 NLog 将有足够的权限来创建日志文件。
还对 nlog 配置文件中的每个目标部分使用 createDirs=true,以在目标部分提供的日志文件路径中自动创建丢失的文件夹。