介绍

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

C# Serilog日志框架相关推荐

  1. Serilog 日志框架如何自动删除超过 N 天的日志 ?

    咨询区 JohnB: 我的程序使用的日志框架是 Serilog,我是按天分割日志文件的,由于每日文件都比较大,我经常手工删除,但这样做很傻,请问日志框架有没有自动帮我删除 N 天之间的日志呢? 回答区 ...

  2. ASP.NET Core 日志框架:Serilog

    在 ASP.NET Core 日志模型 中对日志整体实现方式进行了介绍,通过使用内置日志记录器来实现日志的输出路径.而在实际项目开发中,使用第三方日志框架来记录日志也是非常多的,首先一般基础的内置日志 ...

  3. 解读ASP.NET 5 MVC6系列(9):日志框架

    解读ASP.NET 5 & MVC6系列(9):日志框架 原文:解读ASP.NET 5 & MVC6系列(9):日志框架 框架介绍 在之前的.NET中,微软还没有提供过像样的日志框架, ...

  4. 动手造轮子:写一个日志框架

    动手造轮子:写一个日志框架 Intro 日志框架有很多,比如 log4net / nlog / serilog / microsoft.extensions.logging 等,如何在切换日志框架的时 ...

  5. .Net学习——Nlog日志框架的使用

    1什么是Nlog,为什么要使用Nlog作为日志框架 .Net没有内置的文本日志提供者,对于实际需要记录日志到文本文件中的需求不相匹配,常用的第三方日志框架包括Log4Net,Nlog,SeriLog. ...

  6. .Net 日志系统-常用日志框架

    程序记录日志是非常重要的事情,下面总结常用的程序记录日志的框架. 1.Windows日志 这是Windows操作系统自带的日志记录程序,它记录了操作系统中程序所执行的各种操作. 这种方式也可以用来记录 ...

  7. Java 日志框架适配/冲突解决方案(值得收藏)

    欢迎关注方志朋的博客,回复"666"获面试宝典 来源:juejin.cn/post/6945220055399399455 前言 你是否遇到过配置了日志,但打印不出来的情况? 你是 ...

  8. 最牛逼的 Java 日志框架,性能无敌,横扫所有对手.....

    欢迎关注方志朋的博客,回复"666"获面试宝典 来源:juejin.cn/post/6945753017878577165 Logback 算是JAVA 里一个老牌的日志框架,从0 ...

  9. 可能是全网最全,JAVA日志框架适配/冲突解决方案,可以早点下班了

    点击关注公众号,Java干货及时送达 你是否遇到过配置了日志,但打印不出来的情况? 你是否遇到过配置了logback,启动时却提示log4j错误的情况?像下面这样: log4j:WARN No app ...

  10. MyBatis 如何兼容所有日志框架?

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源:blog.csdn.net/zwx900102/ar ...

最新文章

  1. 【CyberSecurityLearning 附】使用PHP语言搭建简单的论坛:注册功能实现+PHP个人中心设计+简单留言板
  2. boost::with_lock_guard相关的测试程序
  3. python中文分词jieba总结
  4. Golang开发的跨平台蜜罐平台HFish v0.6.4源码
  5. 计蒜客挑战难题:最后一个单词的长度
  6. Spring Mvc使用Jackson进行json转对象时,遇到的字符串转日期的异常处理(Can not deserialize value of type Date from String)
  7. 接口测试之json中的key获取
  8. 读书和不读书有什么区别呢?
  9. Python--day47--mysql索引类型介绍
  10. Study Struts Commons Validator
  11. 因果推断中期学习小结
  12. bzoj4152 [AMPPZ2014]The Captain
  13. lightoj 1029 最小生成树 + 最大生成树
  14. 直播app源代码,单例模式
  15. 中维云视通网络监控系统
  16. 课题申报书范文_课题申请书范例
  17. Java调用外部api接口请求数据(阿里云ISBN查询图书信息为例)
  18. Failed installing 'Tomcat6' service
  19. 计算机历史ppt 英文儿童,第一课-计算机发展历史ppt
  20. 表格拖拽、树状拖拽的各种方法

热门文章

  1. CAVLC和CABAC简介
  2. Java的GUI学习十一(编程菜单)
  3. Java的GUI学习六(Action事件)
  4. centos8网络配置开启wifi_在centos 8中安装各种路由协议
  5. 3809. 修改数组——AcWing题库
  6. 交换两个数 不使用中间变量
  7. java里if为真_Excel:如果所有条件都为真,则嵌套的IF语句返回所有真值
  8. 递推算法之平面分割问题总结
  9. event mpm php,Ubuntu Apache 切换到php-fpm+mpm_event模式
  10. java true false 异或_三元运算符21?true:false;