我正在使用带有NLog.Web.AspNetCore(4.3.1)nuget包的完整.net框架4.6.2的asp.net核心项目。以下是我的配置。
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:\Logs\internal-nlog.txt">
<!-- define various log targets -->
<targets>
<!-- write logs to file -->
<target xsi:type="File" name="allfile" fileName="c:\Logs\nlog-all-${shortdate}.log"
layout="${longdate}|${logger}|${uppercase:${level}}|${message} ${exception:format=stacktrace}"
maxArchiveFiles="100"
archiveFileName="c:\LogsBackup\nlog-all-${shortdate}.{##}.log"
archiveNumbering="DateAndSequence"
archiveAboveSize="10000000"
archiveDateFormat="yyyyMMdd" />
<target xsi:type="File" name="ownFile-web" fileName="c:\Logs\nlog-own-${shortdate}.log"
layout="${longdate}|${logger}|${uppercase:${level}}| ${message} ${exception:format=stacktrace}" />
<target xsi:type="Null" name="blackhole" />
</targets>
<rules>
<!--All logs, including from Microsoft-->
<logger name="*" minlevel="Trace" writeTo="allfile" />
<!--Skip Microsoft logs and so log only own logs-->
<!--<logger name="Microsoft.*" minlevel="Trace" writeTo="blackhole" final="true" />-->
<!--<logger name="*" minlevel="Trace" writeTo="ownFile-web" />-->
</rules>
</nlog>
Startup.cs
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
//add nlog
//env.ConfigureNLog("nlog.config");
//loggerFactory.ConfigureNLog("nlog.config");
//loggerFactory.AddNLog();
app.AddNLogWeb();
//add identity server authentication
//app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions
//{
// Authority = "http://localhost:5000",
// RequireHttpsMetadata = false,
// ApiName = "prismapi"
//});
app.UseMvcWithDefaultRoute();
app.UseSwagger();
app.UseSwaggerUI(options =>
{
options.SwaggerEndpoint("/swagger/v1.0/swagger.json", "Prism api version 1");
});
}
由于某种原因,它不会发出日志。 Nlog甚至没有创建其内部日志文件。有趣的是,如果我取消注释env.ConfigureNLog("nlog.config");
,它开始创建至少其内部日志文件,但仍然没有成功使用实际的日志文件。
答案 0 :(得分:1)
您可能需要在loggerFactory.AddNLog();
方法app.AddNLogWeb();
之前取消注释Configure
。
env.ConfigureNLog("nlog.config");
应该在构造函数中。
另请参阅https://github.com/NLog/NLog.Extensions.Logging
中的How to use
部分
我还想建议从示例中的相同代码行开始。如果这样可以根据您的需要改变它们。
希望这有帮助。