Windows日志的查看方法:
.Net Core程序记录日志到Windows日志中,下面用代码来演示如何实现:
基于.Net Core WebApi 3.1程序
1.NuGet应用程序集:Microsoft.Extensions.Logging.EventLog
2.依赖注入:
在Startup.cs文件的ConfigureServices类中,将EventLog注入到服务中。
//注入EventLog
services.AddLogging(logBulid=> {
logBulid.AddEventLog();
});
3.在需要记录日志的代码,注入ILogger<T> 即可,T一般就是当前类的类名称,这个类的名字会输出到日志,方便定位问题。然后调用LogWarning()、LogError()等方法输出不同级别的日志。
完整代码:
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace WindowsLog.Controllers
{
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
private readonly ILogger<WeatherForecastController> _logger;
public WeatherForecastController(ILogger<WeatherForecastController> logger)
{
_logger = logger;
}
[HttpGet]
public void Get()
{
_logger.LogDebug("我是Debug信息");
_logger.LogInformation("我是info信息");
_logger.LogWarning("我是Warning信息");
_logger.LogError("我是error信息");
_logger.LogCritical("我是Critical信息");
}
}
}
执行结果:
这里只记录了LogWarning、LogError、LogCritical三个级别的日志,其他的LogDebug、LogInformation等没有被记录到Windows日志中,这里目前我还不知道是什么原因。
我想到的是设置日志记录的级别,通过设置最小级别为Trace后,输出的日志仍没有LogDebug、LogInformation。也可能是Windows日志只能记录到Warning级别吧。