如何解决ASP.NET Core 应用程序使用 nlog 的依赖注入不创建日志文件,并且似乎无法识别 nlog.config 文件
以下是有关我们开发环境的详细信息:
NLog.Web.AspNetCore ( 4.10.0 )
DevExpress 20.2.3(我们使用的是 DevExtreme)
Microsoft Visual Studio Enterprise 2019(版本 16.4.6)
ASP.NET 核心 3.1.0
AspNetCore.Mvc 3.1.0.0
Microsoft SQL Server 2008 R2 (RTM) –
dotnet – 版本 3.1.300
我们的部署服务器环境详细信息是:
Windows Server 2016 标准 64 位操作系统
dotnet – 版本 3.1.300
IIS 版本 10
我的应用程序
public void ConfigureServices(IServiceCollection services)
{
services.AddHttpContextAccessor();
services.AddSession(opt =>
{
opt.Cookie.IsEssential = true;
});
services.AddOptions();
services.AddSingleton<IConfiguration>(this.Configuration);
services.AddScoped<IDataAccessor>(d => new DataAccessor(this.Configuration["ConnectionStrings:dbConnectionString"]));
services.AddSingleton((ILoggerFactory)new NLogLoggerFactory());
services.AddSingleton(typeof(ILogger<>),typeof(Logger<>));
}
在这个 ASP.NET Core Web 应用程序的根目录下,我们有一个 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="Trace">
<targets>
<target xsi:type="File" name="allfile" fileName="${aspnet-appbasepath}\logs\nlog-${shortdate}.log"
layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message}
${exception:format=tostring}" />
<target name="console" xsi:type="ColoredConsole" layout="${defaultLayout}" /> </targets>
<rules>
<logger name="*" minlevel="Info" writeTo="logconsole" />
<logger name="*" minlevel="Trace" writeTo="logfile" />
</rules>
</nlog>
public class BlahBlahController : Controller
{
private IWebHostEnvironment _webHostEnvironment;
private ILoggerFactory _loggerFactory;
public BlahBlahController( IWebHostEnvironment webHostEnvironment,ILoggerFactory loggerFactory)
{
_webHostEnvironment = webHostEnvironment;
_loggerFactory = loggerFactory;
}
以下代码是我们实例化和调用记录器实例的地方:
[HttpPost]
public async Task<IActionResult> UploadDataFile(IEnumerable<IFormFile> uploadedFileList)
{
string generatedGuidAsString = null;
string generatedGuidBasedFileName = null;
ILogger logger= _loggerFactory.CreateLogger(this.GetType().Name);
logger.LogTrace("WebHostEnvironment.WebRootPath is" + WebHostEnvironment.WebRootPath);
string uploadsDirectory = Path.Combine(WebHostEnvironment.WebRootPath,"uploads");
logger.LogTrace("uploadsDirectory is" + uploadsDirectory);
……………………………………………………
……………………blah more code blah………………………………………….
…………………………………… blah more code blah ……………………………………………
}
}
但是,当我运行应用程序代码时,它不会创建任何日志文件。我从应用程序根目录开始搜索 *.log 文件,但没有日志文件。
我猜可能是因为依赖注入代码没有指定nlog.config文件,而且是对应的位置:
services.AddSingleton((ILoggerFactory)new NLogLoggerFactory());
services.AddSingleton(typeof(ILogger<>),typeof(Logger<>));
然而,我搜索了互联网,并没有找到任何显示指定了 nlog.config 文件的依赖注入代码。
无论如何,有人可以告诉我如何解决上述问题吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。