在任何业务场景中都会涉及到日志的使用,可以通过日志记录系统运行过程中的错误信息、操作信息、用户信息、数据记录等,下面将在.net core中使用Serilog.AspNetCore组件进行日志的操作
在NuGet包管理器中搜索“Serilog.AspNetCore”,并安装即可
在program.cs的main方法中初始化Logger,代码如下
public static void Main(string[] args)
{
Log.Logger = new LoggerConfiguration()
.Enrich.FromLogContext()
.WriteTo.Console()// 日志输出到控制台
.WriteTo.File("logserilog.txt", rollingInterval: RollingInterval.Day) //日志输出txt文件,生成周期每天,如:logserilog20201026.txt
.CreateLogger();
try
{
Log.Information("Starting up");
CreateHostBuilder(args).Build().Run();
}
catch (Exception ex)
{
Log.Fatal(ex, "Application start-up failed");
}
finally
{
Log.CloseAndFlush();
}
CreateHostBuilder(args).Build().Run();
}
在CreateHostBuilder方法中添加方法.UseSerilog(),将Serilog设置为提供日志程序,代码如下
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseWindowsService()
.UseSerilog()
.ConfigureServices((hostContext, services) =>
{
services.AddHostedService();
});
完整代码如下
public class Program
{
public static void Main(string[] args)
{
Log.Logger = new LoggerConfiguration()
.Enrich.FromLogContext()
.WriteTo.Console()// 日志输出到控制台
.WriteTo.File("logserilog.txt", rollingInterval: RollingInterval.Day) //日志输出txt文件,生成周期每天,如:logserilog20201026.txt
.CreateLogger();
try
{
Log.Information("Starting up");
CreateHostBuilder(args).Build().Run();
}
catch (Exception ex)
{
Log.Fatal(ex, "Application start-up failed");
}
finally
{
Log.CloseAndFlush();
}
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseWindowsService()
.UseSerilog()
.ConfigureServices((hostContext, services) =>
{
services.AddHostedService();
});
}
把Logger注入到你的Controller
private readonly ILogger _logger;
public ArticleController(ILogger logger)
{
_logger = logger;
}
在方法中直接使用即可如下
[HttpGet]
public IEnumerable Get()
{
//内置日志
_logger.LogTrace(1000, "log Trace msg");
_logger.LogDebug(1001, "log Debug msg");
_logger.LogInformation(1002, "log Information msg");
_logger.LogWarning(1003, "log Warning msg");
_logger.LogError(1004, "log Error msg");
_logger.LogCritical(1005, "log Critical msg");
return new string[] { "value1", "value2" };
}
public async Task GetNews()
{
Log.Information("information");
Log.Error("erroe");
Log.Warning("log Warning msg");
}