Serilog初识(一)————分别Console、Web程序简单使用Serilog

Serilog简介


Serilog是.NET应用程序的诊断日志库。它易于设置,具有干净的API,并可在所有最新的.NET平台上运行。虽然它在最简单的应用程序中也很有用,但Serilog对结构化日志记录的支持在处理复杂,分布式和异步应用程序和系统时仍然很有用。——GithubSerilog的介绍

通过Console使用Serilog

使用Serilog之前先得在NuGet下载几个包,在NuGet控制台并输入

>Install-Package Serilog
>Install-Package Serilog.Sinks.Console

第一个是Serilog的核心软件包,另外一个是接收器,用于接收日志事件并展示出来,这里只下载了控制台的接收器,关于其它接收器可在下面网址查到
https://github.com/serilog/serilog/wiki/Provided-Sinks

class Program
{
     static  void Main(string[] args)
     {
            //日志的输出模板
            string Logformat = @"{Timestamp:yyyy-MM-dd HH:mm-dd }[{Level:u3}] {Message:lj}{NewLine}";
            //类似创建一个管道
            var log = new LoggerConfiguration()
                //设置最低等级
                .MinimumLevel.Debug()     
                //将事件发送到控制台并展示
                .WriteTo.Console(outputTemplate:Logformat)
                .CreateLogger();
                //
            Log.Logger = log;
            
           //这里因为设置了最低等级为Debug,
            //所以比Debug低的Verbose不会展示在控制台
            Log.Verbose("这是一个Verbose");
            Log.Information("开始");
            int a = 0;
            int b = 2;
            try
            {
                Log.Debug("计算两者相除");
                Console.WriteLine(b / a);
            }catch(Exception ex)
            {
                Log.Error(ex, "计算出现意外的错误");
            }
            Log.Information("结束");
     }
}

LoggerConfiguration的MinimumLevel默认是Information等级

在这里插入图片描述

如果还想将日志记录到文件的话,先在NuGet下载相关的Sinks

>Install-Package Serilog.Sinks.File

然后在上面的程序添加一些代码.WriteTo.File()

Log.Logger = new LoggerConfiguration()
              .MinimumLevel.Debug()     
              .WriteTo.Console(outputTemplate:Logformat)
              //第一个参数是文件路径,第二个参数是输出模板的选择,第三个参数是表示程序隔什么事件新创造一个日志文件
              .WriteTo.File("logs\\myConsole.log",outputTemplate:Logformat,rollingInterval:RollingInterval.Day)
              .CreateLogger();

rollingInterval参数默认是RollingInterval.Infinite 永远不创建新文件并不将日志回滚到新文件

在这里插入图片描述

在Web程序中使用Serilog


下面使用 ASP.NET Core 来展示效果
首先先在NuGet下载相关的包

>Install-Package Serilog
>Install-Package Serilog.AspNetCore
>Install-Package Serilog.Sinks.Console
>Install-Package Serilog.Sinks.File
>Install-Package Serilog.Settings.Configuration

第一个和第二个包是ASP.NET Core所需要的核心包,第二个和第三个是接收器包,第四个用于通过外部配置文件来配置Serilog

通过Program.cs添加Serliog
public class Program
{
        public static void Main(string[] args)
        {
           //选择配置文件appsetting.json
            var Configuration = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("appsettings.json")
                .Build();
           
           Log.Logger = new LoggerConfiguration()
                //管道的配置由配置文件进行修改
                 .ReadFrom.Configuration(Configuration)
                 .CreateLogger();
          BuildWebHost(args).Run();
        }

        public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)           
                .UseStartup<Startup>()
                //Serilog.AspNetCore的方法
                .UseSerilog()
                .Build();
}
在appsettings.json文件添加配置信息
"Serilog": {
    "MinimumLevel": {
      "Default": "Debug"
    },
    "WriteTo": [
      {
        "Name": "Console",
        "Args": {
          "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm-dd }[{Level:u3}] {Message:lj}{NewLine}{Exception}"
        }
      },
      {
        "Name": "File",
        "Args": {
          "path": "logs\\myWeb.log",
          "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm-dd }[{Level:u3}] {Message:lj}{NewLine}{Exception}"
        }
      }
    ]
  }
控制器
public class HomeController : Controller
{
     private readonly ILogger<HomeController> _log;
     
     public HomeController(ILogger<HomeController> Logger)
     {
         _log = Logger;
     }  
     
     public IActionResult Index()
     {
            _log.LogInformation("开始");
            int a = 0;
            int b = 2;
            try
            {
                _log.LogDebug("计算两者相除");
                Console.WriteLine(b / a);
            }
            catch (Exception ex)
            {
                _log.LogError(ex, "计算出现意外的错误");
            }     
            _log.LogInformation("结束");
           
           return View();
     }
       
}

在这里插入图片描述

参考资料

Serilog官方文档:https://github.com/serilog/serilog/wiki/Getting-Started

博客:https://www.cnblogs.com/zyz-Notes/p/11249495.html

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值