我有一个要部署到生产环境中的ASP.NET Core 2 Web应用程序,并且需要启用日志来解决错误。我在文档中找不到关于appsettings.json的logger部分中的架构的任何地方。这是我在那里的东西:
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
},"Console": {
"IncludeScopes": "true"
}
}
当我从控制台运行exe时,日志信息会显示在控制台中,但是实体框架也在记录日志,因此由于显示的输出数量有限,所以我看不到自己的消息。因此,我需要将日志输出到一个文件,例如C:\ temp \ my.log。如何配置ASP.NET Core 2来做到这一点?
先谢谢了。
答案 0 :(得分:1)
因此,我需要将日志输出到一个文件,例如C:\ temp \ my.log。如何配置ASP.NET Core 2来做到这一点?
Serilog有a package for that。
dotnet add package Serilog.Extensions.Logging.File
我们这样配置它。
public void ConfigureServices(IServiceCollection services)
{
services.AddLogging();
}
public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
{
loggerFactory.AddFile("C:\\temp\\my.log");
}
另请参阅:https://nblumhardt.com/2016/10/aspnet-core-file-logger/
答案 1 :(得分:1)
This issue似乎与您的要求相同。
您还可以尝试使用NLog将日志输出到文件中,也可以确定其配置文件中日志的布局。
installing之后,在startup.cs中,设置日志文件夹:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
GlobalDiagnosticsContext.Set("configDir", "C:\\git\\damienbod\\AspNetCoreNlog\\Logs");
GlobalDiagnosticsContext.Set("connectionString", Configuration.GetConnectionString("NLogDb"));
loggerFactory.AddNLog();
app.UseMvc();
}
然后在nlog.config中,设置文件名:
<target xsi:type="File" name="allfile" fileName="${gdc:item=configDir}\nlog-all.log"/>
以下是您可以参考的示例: https://github.com/damienbod/AspNetCoreNlog
答案 2 :(得分:1)
使用中间件的另一种方式
https://gist.github.com/elanderson/c50b2107de8ee2ed856353dfed9168a2
(请阅读注释,因为在代码中遇到一些麻烦,有关身体寻找位置的注释)
并设置web.config参数stdout,如stdoutLogEnabled =“ true” stdoutLogFile =“。\ logs \ stdout”
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\ReportViewer.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" />
</system.webServer>
</location>
</configuration>
您应该在项目目录中创建两个文件夹logs
和logs\stdout
。