.NET Core 2.2 WebAPI记录某些内容
.NET Core 2.2 WebAPI记录某些内容
我有一个基本的WebAPI .NET Core 2.2项目,我正在尝试记录一些内容:
<代码>
// GET api/values
[HttpGet]
public ActionResult
{
System.Diagnostics.Trace.WriteLine("THIS IS A TEST");
System.Diagnostics.Debug.WriteLine("THIS IS A TEST");
return new string[] { "value1", "value2" };
}
</代码>
不幸的是,我的输出或控制台没有显示任何内容。我正在使用Visual Studio Code。这是我第一个.NET项目,所以请随时提问,我非常乐意回答。
更新
我刚刚下载了DebugView,我能够看到我记录的内容。仍在寻找一种不依赖于下载工具的替代解决方案,因为日志记录非常基本。
问题原因:使用NLog.Web.AspNetCore包进行日志记录时,可能会遇到无法记录日志的问题。
解决方法:
1. 确保已安装NLog.Web.AspNetCore包。
2. 在Startup.cs文件中进行配置,添加以下代码:
using NLog.Extensions.Logging; public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { // ... loggerFactory.AddNLog(); app.AddNLogWeb(); // ... }
3. 在appsettings.json文件中配置NLog,添加以下代码:
"NLog": {
"autoReload": true,
"throwExceptions": true,
"internalLogLevel": "Error",
"internalLogFile": "logs/internallog.txt",
"extensions": {
"NLog.Web.AspNetCore": {
"assembly": "NLog.Web.AspNetCore"
}
},
"targets": {
"file": {
"type": "File",
"fileName": "logs/${shortdate}.log",
"layout": "${longdate}|${event-properties:item=EventId.Id}|${logger}|${uppercase:${level}}|${message} ${exception:format=tostring}"
}
},
"rules": {
"default": {
"final": true,
"rules": [
{
"logger": "*",
"minLevel": "Info",
"writeTo": "file"
}
]
}
}
}
4. 确保在Controller或其他需要记录日志的类中,使用ILogger进行日志记录,例如:
using Microsoft.Extensions.Logging; private readonly ILogger_logger; public HomeController(ILogger logger) { _logger = logger; } public IActionResult Index() { _logger.LogInformation("Logging something"); return View(); }
问题出现的原因:
在ASP.NET Core应用程序中,我们可以使用内置的日志记录服务来记录日志。该服务与日志记录提供程序一起工作,这些提供程序将日志存储或显示到特定的介质中,例如控制台、调试器、跟踪监听器等。在这个例子中,我们使用了控制台提供程序来显示日志。
解决方法:
首先,在程序的主方法中添加控制台提供程序,然后通过构造函数注入ILogger实例,最后在需要记录日志的地方调用ILogger的对应方法。
具体的解决步骤如下:
Step 1:在程序的主方法中添加控制台提供程序
Step 2:在需要记录日志的类中通过构造函数注入ILogger实例
Step 3:调用ILogger的对应方法来记录日志
代码如下:
public static void Main(string[] args) { var host = CreateWebHostBuilder(args).Build(); var logger = host.Services.GetRequiredService>(); logger.LogInformation("Seeded the database."); host.Run(); } public class AboutModel { private readonly ILogger _logger; public AboutModel(ILogger logger) { _logger = logger; } public void OnGet() { _logger.LogInformation("Message displayed: {Message}", Message); } }
通过以上步骤,我们就可以在ASP.NET Core应用程序中使用控制台提供程序来记录日志了。