NLog在Asp.net Core中不写入文件
本文关键字:文件 Core Asp net NLog | 更新日期: 2023-09-27 18:17:57
我在Asp.net Core应用程序中使用NLog,但NLog无法写入文件,我已经准备好更改文件的权限,但仍然面临问题。文件第一次创建,但无法在该文件中写入日志。
这是我的日志。配置文件代码如下:
<?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");
点击链接:https://github.com/NLog/NLog.Web/wiki/Getting-started-with-ASP.NET-Core- (csproj——vs2017)
你必须启用复制到bin文件夹nlog.confignlog.config
我认为这是因为"Info"级别实际上比"Debug"具有更高的优先级。像这样更改配置可能有效。
<logger name="*" minlevel="Debug" maxLevel="Info" writeTo="File" />
参考:NLOG Configuration
我想你的配置文件应该是这样的。
<?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>
我已经删除了不必要的部分,也删除了@The FORCE Jb建议的mixlevel和maxlevel,你必须指定。
除此之外,我还可以看到你有DEBUG字的类型
.NET Core需要NLog. extensions . logging包(NuGet链接),并在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页面