栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

C# Serilog日志框架

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C# Serilog日志框架

介绍

在.NET使用日志框架第一时间会想到NLog或是Log4Net,Serilog 是这几年快速崛起的Log框架之一,Serilog是以Structured logging 为基础进行设计,透过logging API 可以轻松的记录应用程式中对象属性,方便快速进行logging 内容进行查询与分析,并将其纪录内容透过json (可指定) 的方式输出。在过去的几年中,结构化日志已经大受欢迎。而Serilog是 .NET 中最著名的结构化日志类库 ,我们提供了这份的精简指南来帮助你快速了解并运用它。

//以下为常用记录日志方法 等级最高的是Fatal

log.Information("info");
log.Debug("debug");
log.Warning("warning");
log.Error("err");
log.Fatal("fatal");

无论是core或framework ,配置基本相同,就是声明一个(如下代码)

Log.Logger = new LoggerConfiguration() .CreateLogger();

当然上面的代码配置根本是不够的,你想个性化设置日志输出到什么地方,需要引用一些serilog的接收器。Serilog的输出对象称之为Sink(水槽,也就是接收器),nuget中搜索 关键词serilog.sinks, 会发现有一堆组件。

常见的接收器
Console 输出到控制台
Debug 输出到VS的Debug窗口
Trace 输出到VS的控制台
File 输出到文件
Rolling File
MongoDB 输出到MongoDB
LiteDB 输出到文件数据库LiteDB
SQLite 输出到文件数据库SQLite
SignalR 输出为SignalR服务
HTTP 输出到REST服务 
下面介绍下CS架构和BS架构使用方法 1.首先安装Nuget包

Install-Package Serilog
也可以

2.

2.CS架构以winform 为例

using Serilog;
构造函数中写

	//以下表示在程序运行目录 以天为单位生成日志文件(也可以以小时等为单位)
 Log.Logger = new LoggerConfiguration()
    .MinimumLevel.Debug()
    .WriteTo.File("logs\log.txt", rollingInterval: RollingInterval.Day)
    .CreateLogger();

2.输出日志方法
 Log.Information("Information");
            Log.Debug("debug");
            Log.Error("error");

3.每一天会生成每天的日志文件

4.BS架构以net core为例
using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Threading.Tasks;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Serilog;
using Serilog.Core;
using Serilog.Events;

namespace BoYuanCore.Web
{
    public class Program
    {
    public static int Main(string[] args)
        {
            //CreateHostBuilder(args).Build().Run();


            Log.Logger = new LoggerConfiguration()
               .MinimumLevel.Debug()//最小的输出单位是Debug级别的
               .MinimumLevel.Override("Microsoft", LogEventLevel.Information)//将Microsoft前缀的日志的最小输出级别改成Information
               .Enrich.FromLogContext()
               .WriteTo.File(@"./logs/log.txt", rollingInterval: RollingInterval.Day).CreateLogger();

            try
            {
                Log.Information("Starting web host");
                CreateHostBuilder(args).Build().Run();
                return 0;
            }
            catch (Exception ex)
            {
                Log.Fatal(ex, "Host terminated unexpectedly");
                return 1;
            }
            finally
            {
                Log.CloseAndFlush();
            }
        }
    }
}

4.1输出日志方法
using Serilog;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net.Http.Headers;
using System.Threading.Tasks;
 
namespace PublicTest.Controllers
{
    [Route("api/[controller]/[action]")]
    [ApiController]
    public class TestController : ControllerBase
    { 
        [HttpGet]
        public ActionResult Getqwe()
        {
        Log.Information("123");
        Log.Error("error");
        }
     }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1022794.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号