我在我的Asp.net核心应用程序中使用NLog,但是NLog无法写入文件,我已经准备好了文件的更改权限,但仍然面临问题。文件首次创建,但无法在该文件中写入日志。
以下是我的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"
autoReload="true"
internalLogLevel="Warn"
internalLogFile="C:\git\damienbod\AspNetCoreNlog\Logs\internal-nlog.txt">
<targets>
<target xsi:type="File" name="allfile" fileName="D:\nlog-all.txt"
layout="${longdate}|${event-properties:item=EventId.Id}|${logger}|${uppercase:${level}}|${message} ${exception}"
keepFileOpen="false"/>
<target xsi:type="EventLog"
name="String"
layout="Layout"
machineName="String"
source="Layout"
category="Layout"
eventId="Layout"
log="String"
maxMessageLength="Integer" />
</targets>
<rules>
<!--All logs, including from Microsoft-->
<logger name="*" minlevel="*Info*" maxLevel="*Deubg*" writeTo="allfile" />
</rules>
</nlog>
这是我控制器的代码
NLog.Logger _Logger= LogManager.GetCurrentClassLogger();
_Logger.Info("Hello i m executing");
答案 0 :(得分:0)
我认为这是因为“Info”级别实际上具有比“Debug”更高的优先级。像这样更改配置可能有效。
<logger name="*" minlevel="Debug" maxLevel="Info" writeTo="File" />
答案 1 :(得分:0)
我认为您的配置文件应该是这样的。
<?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"
autoReload="true"
internalLogLevel="Warn"
internalLogFile="C:\git\damienbod\AspNetCoreNlog\Logs\internal-nlog.txt">
<!-- define various log targets -->
<targets>
<!-- write logs to file -->
<target xsi:type="File" name="allfile" fileName="D:\nlog-all.txt"
layout="${longdate}|${event-properties:item=EventId.Id}|${logger}|${uppercase:${level}}|${message} ${exception}" keepFileOpen="false"/>
</targets>
<rules>
<logger name="*" minlevel="Debug" maxlevel="Info" writeTo="allfile" />
</rules>
</nlog>
我已经删除了不必要的部分,也按照你必须指定的@TheCE Jb的建议删除了mixlevel和maxlevel。
除此之外,我还可以看到你有DEBUG字的类型。
答案 2 :(得分:0)
您需要.NET Core的NLog.Extensions.Logging包(NuGet link)并在startup.cs
中启用NLog:
public void Configure(IApplicationBuilder app,
IHostingEnvironment env, ILoggerFactory loggerFactory)
{
//add NLog to ASP.NET Core
loggerFactory.AddNLog();
//configure nlog.config in your project root
env.ConfigureNLog("nlog.config");
...
有关详细信息,请参阅GitHub page
答案 3 :(得分:0)
只需点击此链接: https://github.com/NLog/NLog.Web/wiki/Getting-started-with-ASP.NET-Core-(csproj---vs2017)
您必须为 nlog.config 启用copy to bin文件夹 Image copy nlog.config