【.Net Core】.Net Core中使用日志(Serilog)

前言

在任何业务场景中都会涉及到日志的使用,可以通过日志记录系统运行过程中的错误信息、操作信息、用户信息、数据记录等,下面将在.net core中使用Serilog.AspNetCore组件进行日志的操作

 组件安装

在NuGet包管理器中搜索“Serilog.AspNetCore”,并安装即可

【.Net Core】.Net Core中使用日志(Serilog)_第1张图片

初始化Logger

在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();
               });
    }

使用

1、通过依赖注入使用(Controller)

把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" };
        }

2、直接使用(Log)

 public async Task GetNews()
 {
            Log.Information("information");
            Log.Error("erroe");
            Log.Warning("log Warning msg");
 }

最终效果

你可能感兴趣的:(.Net,.Net,Core,Serilog,.net,core,.net,core日志)