保持优质文档是 Serilog 的优先事项。如果你发现文档中有缺失或不准确的内容,或者希望通过添加主题或教程来扩展 wiki,请通过问题追踪系统告知我们。

为什么选择Serilog?

与许多其他 .NET 库一样,Serilog 提供了基本的诊断日志记录功能,支持文件、控制台等多种方式。它易于设置,具有简洁的 API,并且可以在最新的 .NET 平台之间移植。

与其他 .NET 日志库不同,Serilog 传递的参数不会被破坏性地转换为文本格式。相反,它们会作为结构化数据被保留,可以以文档形式写入 NoSQL 数据存储中。

var input = new { Latitude = 25, Longitude = 134 };
var time = 34;
log.Information("Processed {@SensorInput} in {TimeMS:000} ms", input, time);

Serilog 消息模板使用一种简单的领域特定语言(DSL),扩展了常规 .NET 格式字符串。属性在消息模板中命名,并与提供给日志方法的参数按位置匹配。

这个示例记录了两个属性:SensorInput 和 TimeMS,以及日志事件。

在 JSON 格式中,示例中捕获的属性将如下所示:

{ "SensorInput": { "Latitude": 25, "Longitude": 134 }, "TimeMS": 34 }

在 SensorInput 前面的 @ 操作符指示 Serilog 保留传入对象的结构。如果省略这个操作符,Serilog 会识别简单类型,如字符串、数字、日期和时间、字典以及可枚举类型;其他对象会使用 ToString() 方法转换为字符串。可以使用 $ 操作符强制进行字符串化,代替 @ 操作符。

TimeMS 后面的 :000 部分是标准 .NET 格式字符串,影响属性的呈现方式(而不是捕获方式)。Serilog 附带的标准控制台接收器将把上述消息呈现为:

09:14:22 [Information] Processed { Latitude: 25, Longitude: 134 } in 034 ms

从 NuGet 安装

核心日志记录包是 Serilog。支持的平台包括 .NET/.NET Core、.NET Framework 4.5+、Windows(8/WinRT/Universal+)和 Windows Phone 8+。

$ dotnet add package Serilog
$ dotnet add package Serilog.Sinks.Console

浏览 NuGet 上的 Serilog 标签,查看可用的 sinks、扩展和相关的第三方包。

类型位于 Serilog 命名空间。

using Serilog;

通过 LoggerConfiguration 创建根日志记录器。

using var log = new LoggerConfiguration()
.WriteTo.Console()
.CreateLogger();

这通常在应用程序启动时完成,并将日志记录器保存以供应用程序类后续使用。如果需要,可以创建和独立使用多个日志记录器。

log.Information("Hello, Serilog!");

Serilog 的全局、静态可访问日志记录器通过 Log.Logger 设置,可以使用 Log 类上的静态方法调用。

Log.Logger = log;
Log.Information("The global logger has been configured");

配置和使用 Log 类是一种可选的便利性,方便库采用 Serilog。Serilog 本身的日志记录管道不要求任何静态/进程范围的状态,因此直接使用 Logger/ILogger 也是可以的。

示例应用程序

下面的完整示例展示了在一个简单的控制台应用程序中进行日志记录,事件会发送到控制台以及带有日期戳的滚动日志文件。

1.创建一个新的控制台应用程序项目

2.安装核心 Serilog 包、控制台接收器(sink)和文件接收器(sink)

在项目目录中的 shell 提示符下,输入:

$ dotnet add package Serilog
$ dotnet add package Serilog.Sinks.Console
$ dotnet add package Serilog.Sinks.File

3.在 Program.cs 中添加以下代码

using System;
using Serilog; class Program
{
static async Task Main()
{
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.Console()
.WriteTo.File("logs/myapp.txt", rollingInterval: RollingInterval.Day)
.CreateLogger(); Log.Information("Hello, world!");
int a = 10, b = 0;
try
{
Log.Debug("Dividing {A} by {B}", a, b);
Console.WriteLine(a / b);
}
catch (Exception ex)
{
Log.Error(ex, "Something went wrong");
}
finally
{
await Log.CloseAndFlushAsync();
}
}
}

4.运行程序

Serilog文档翻译系列(一) - 入门指南的更多相关文章

  1. 一起学微软Power BI系列-官方文档-入门指南(1)Power BI初步介绍

    我们在前一篇文章微软新神器-Power BI,一个简单易用,还用得起的BI产品中,我们初步介绍了Power BI的基本知识.由于Power BI是去年开始微软新发布的一个产品,虽然已经可以企业级应用, ...

  2. 一起学微软Power BI系列-官方文档-入门指南(2)获取源数据

    我们在文章: 一起学微软Power BI系列-官方文档-入门指南(1)Power BI初步介绍中,我们介绍了官方入门文档的第一章.今天继续给大家介绍官方文档中,如何获取数据源的相关内容.虽然是英文,但 ...

  3. 一起学微软Power BI系列-官方文档-入门指南(3)Power BI建模

    我们前2篇文章:一起学微软Power BI系列-官方文档-入门指南(1)Power BI初步介绍 和一起学微软Power BI系列-官方文档-入门指南(2)获取源数据 中,我们介绍了官方入门文档与获取 ...

  4. 一起学微软Power BI系列-官方文档-入门指南(4)Power BI的可视化

    在前面的系列文章中,我们介绍了官方有关获取数据,以及建模的原始文档和基本介绍.今天继续给大家介绍官方文档中,有关可视化的内容.实际上获获取数据和建模更注重业务关系的处理,而可视化则关注对数据的解读.这 ...

  5. 一起学微软Power BI系列-官方文档-入门指南(5)探索数据奥秘

    我们几篇系列文章中,我们介绍了官方入门文档与获取数据等基本知识.今天继续给大家另外一个重点,探索数据奥秘.有了数据源,有了模型,下一步就是如何解析数据了.解析数据的过程需要很多综合技能,不仅仅是需要掌 ...

  6. 一起学微软Power BI系列-官方文档-入门指南(6)Power BI与Excel

    今天介绍了官方入门文档中有关PowerBI和Excel的知识.前几篇入门文档有点仓促,加上最近时间的研究,会有更多技巧性和入门型的文章或者视频发布,最后2篇入门文档将更加详细一点,因为部分文章进行简单 ...

  7. 一起学微软Power BI系列-官方文档-入门指南(7)发布与共享-终结篇+完整PDF文档

    接触Power BI的时间也只有几个月,虽然花的时间不多,但通过各种渠道了解收集,谈不上精通,但对一些重要概念和细节还是有所了解.在整理官方文档的过程中,也熟悉和了解了很多概念.所以从前到后把微软官方 ...

  8. 【资料收集】OpenCV入门指南 系列文章

    <OpenCV入门指南>系列文章地址:http://blog.csdn.net/morewindows/article/category/1291764 目录: 第一篇  安装OpenCV ...

  9. IPv6系列-入门指南

    本文是<IPv6系列>文章的第一篇<入门指南>,用于快速了解并上手IPv6. 小慢哥的原创文章,欢迎转载 目录 ▪ 一. 为什么要了解IPv6 ▪ 二. 顾虑:IPv6地址太复 ...

  10. ASP.NET MVC 5 入门指南汇总

    经过前一段时间的翻译和编辑,我们陆续发出12篇ASP.NET MVC 5的入门文章.其中大部分翻译自ASP.NET MVC 5 官方教程,由于本系列文章言简意赅,篇幅适中,从一个web网站示例开始讲解 ...

随机推荐

  1. 详解Web应用安全系列(9)点击劫持

    点击劫持(Clickjacking)漏洞,也被称为界面伪装攻击(UI Redress Attack)或UI覆盖攻击,是一种利用视觉欺骗手段进行的网络攻击方式.这种攻击方式通过技术手段欺骗用户点击他们本 ...

  2. SpringBoot 对接美团闪购,检验签名,获取推送订单参数,text转json

    接口文档地址 订单推送(已确定订单):https://open-shangou.meituan.com/home/docDetail/177 签名算法:https://opendj.meituan.c ...

  3. 某手创作服务 __NS_sig3 sig3 | js 逆向

    拿获取作品列表为例 https://cp.kuaishou.com/rest/cp/works/v2/video/pc/photo/list?__NS_sig3=xxxxxxxxxxx 搜索__NS_ ...

  4. oeasy教您玩转vim - 43 - # 替换模式

    ​ 替换模式 回忆上节课内容 上次我们学到的最有用的就是c 他和d的区别就是删除之后进入到插入模式 c可以配合motion 可以用ciw来快速删除当前光标所在的单词 可i和a 配合的文字块 w wor ...

  5. ECMAScript 是什么?

    ECMAScript 是什么 简介 Ecma 标准定义了 ECMAScript 语言 ECMAScript 基于多种原始技术,最著名的是 JavaScript (Netscape) 和 JScript ...

  6. 小狼毫&雾凇拼音安装及部署-Windows(图文)

    小狼毫输入法和雾凇拼音主题安装以及配置步骤 先上资源链接 小狼毫官网:RIME | 中州韻輸入法引擎 小狼毫Github地址:rime/weasel: [小狼毫]Rime for Windows (g ...

  7. cpu亲和性相关函数和宏 基础讲解[cpu_set_t]

    cpu亲和性相关函数和宏讲解: 写在前面: 我在查找关于linux cpu宏函数没看到有对宏函数基础的.详细的讲解,笔者便通过官方文档入手,对次进行的翻译和理解希望能帮到对这方面宏有疑惑的读者 exp ...

  8. VirtualBox扩容CentOS-7虚拟机磁盘

    1.背景描述 如上图所示,根路径"/"所在的文件系统已没有可用的磁盘空间,需要扩容磁盘. df -h 2.VirtualBox操作 2.1.查看当前虚拟磁盘的大小 如上图所示,点击 ...

  9. 【DataBase】MySQL 06 条件查询 & 排序查询

    视频参考自:P28 - P42 https://www.bilibili.com/video/BV1xW411u7ax 条件查询概述 # 进阶2 条件查询 -- 语法:SELECT 查询列表 FROM ...

  10. 【SpringBoot】14 数据访问P2 整合Druid数据源

    [SpringBoot引入Druid数据源] 在整合Jdbc的工程基础上加入这个依赖 并注册一个配置类即可 maven坐标: <!-- https://mvnrepository.com/art ...