zoukankan      html  css  js  c++  java
  • Web API 集成Serilog

    首先 ,安装这两个nuget

    Install-Package Serilog.AspNetCore -Version 4.1.0

    Install-Package Serilog.Sinks.MSSqlServer -Version 5.6.1

    手动创建数据库 SerilogExample

    Startup.cs文件:

    using Microsoft.AspNetCore.Hosting;
    using Microsoft.Extensions.Hosting;
    using Serilog;
    using Serilog.Sinks.MSSqlServer;
    using System;
    using System.Collections.ObjectModel;
    
    namespace SerilogExample.Api
    {
        public class Program
        {
            [Obsolete]
            public static void Main(string[] args)
            {
                var columOptions = new ColumnOptions
                {
                    AdditionalColumns = new Collection<SqlColumn>
                    {
                        new SqlColumn
                        {
                            ColumnName="Name",DataType=System.Data.SqlDbType.NVarChar
                        }
                    }
                };
                var conn = @"Data Source=.;database=SerilogExample;User ID=sa;Password=123456;Pooling=true;Max Pool Size=40000;Min Pool Size=0;";
    
                Log.Logger = new LoggerConfiguration()
                    .MinimumLevel.Debug()
                    .MinimumLevel.Override(source:"Microsoft", minimumLevel:Serilog.Events.LogEventLevel.Error)//筛选Microsoft的日志信息
                    .WriteTo.Console()//打印到控制台
                    .WriteTo.MSSqlServer(connectionString:conn,//连接字符串
                    tableName:"Logs", //表名
                    autoCreateSqlTable: true,//自动创建表
                    columnOptions: columOptions,//载入自定义表名
                    restrictedToMinimumLevel: Serilog.Events.LogEventLevel.Debug)
                    .CreateLogger();
    
                CreateHostBuilder(args).Build().Run();
                Log.CloseAndFlush(); //释放日志
            }
    
            public static IHostBuilder CreateHostBuilder(string[] args) =>
                Host.CreateDefaultBuilder(args)
                    .ConfigureWebHostDefaults(webBuilder =>
                    {
                        webBuilder.UseSerilog().UseStartup<Startup>();//注册日志中间件
                    });
        }
    }
    
    

    Controller使用注入:

     private readonly ILogger<WeatherForecastController> _logger;
    
     public WeatherForecastController(ILogger<WeatherForecastController> logger)
      {
          _logger = logger;
      }
    

    正常使用:

    _logger.LogInformation("this is information message");
    

    使用 ForContext() 给自定义的列名添加值 (这种方式不知道规范不规范,但是可以使用):

    Serilog.Log.ForContext("Name", "zhangsan").Information("this is information message") ;
    

    Controller.cs完整代码

    using Microsoft.AspNetCore.Mvc;
    using Microsoft.Extensions.Logging;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    
    namespace SerilogExample.Api.Controllers
    {
        [ApiController]
        [Route("[controller]")]
        public class WeatherForecastController : ControllerBase
        {
            private static readonly string[] Summaries = new[]
            {
                "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
            };
    
            private readonly ILogger<WeatherForecastController> _logger;
    
            public WeatherForecastController(ILogger<WeatherForecastController> logger)
            {
                _logger = logger;
            }
    
            [HttpGet]
            public IEnumerable<WeatherForecast> Get()
            {
    
                Serilog.Log.ForContext("Name", "sunshauize").Information("111111") ;
    
                _logger.LogInformation("this is information message");
                var rng = new Random();
                return Enumerable.Range(1, 5).Select(index => new WeatherForecast
                {
                    Date = DateTime.Now.AddDays(index),
                    TemperatureC = rng.Next(-20, 55),
                    Summary = Summaries[rng.Next(Summaries.Length)]
                })
                .ToArray();
            }
        }
    }
    
  • 相关阅读:
    MVC.Net:Razor指定模板
    Intellij Idea 13:导入openfire源代码
    SharePoint 2013:解决爬网出错的问题
    MySQL:解决MySQL无法启动的问题
    SharePoint 2013:解决添加域名后每次都需要登录的问题
    Android 动画
    android:persistent属性
    ubuntu 安装 open in teminal
    利用python建表
    flask request
  • 原文地址:https://www.cnblogs.com/mi21/p/15435404.html
Copyright © 2011-2022 走看看