在Winform项目和Web API的.NetCore项目中使用Serilog 来记录日志信息

摘要:
不管对于.netframwork或者.netcore的Winform项目来说,使用Serilog来记录日志信息的操作都很类似,它都支持的。其中需要在IHostBuilder或者IWebHostBuilder中注入Serilog接口,如下初始化代码所示。

在我们常规的调试或者测试的时候,喜欢把一些测试信息打印在控制台或者记录在文件中,对于.netframework项目来说,我们输出控制台的日志信息习惯的用Console.WriteLine来输出查看,不过对于.netcore的项目来说,这种输出看不到任何信息了,不过即使这样,我们建议还是把一些测试的日志记录在文件中,供查看对比。本篇随笔介绍使用Serilog 来记录日志信息,包括应用于.netframework项目和.netcore项目中都适合。

1、在Winform项目中整合Serilog 记录日志

在.NET使用日志框架第一时间会想到NLog或是Log4Net,Serilog 是这几年快速崛起的Log框架之一,Serilog是以Structured logging 为基础进行设计,通过logging API 可以轻松的记录应用程序中对象属性,方便快速进行logging 内容进行查询与分析,并将其纪录内容通过json (可指定) 的方式输出。

不管对于.netframwork或者.netcore的Winform项目来说,使用Serilog 来记录日志信息的操作都很类似,它都支持的。

官网地址:https://serilog.net/,或者参考它的Github地址:https://github.com/serilog/serilog

在Winform项目和Web API的.NetCore项目中使用Serilog 来记录日志信息第1张

我们只需要引入对应的几个Serilog 相关DLL即可,如下所示。

在Winform项目和Web API的.NetCore项目中使用Serilog 来记录日志信息第2张

然后在Main函数中添加对应的处理代码,如下所示。

    static classProgram
    {
        /// <summary>
        ///应用程序的主入口点。
        /// </summary>
[STAThread]
        static voidMain()
        {
            Log.Logger = newLoggerConfiguration()
                .MinimumLevel.Debug()
                .Enrich.FromLogContext()
                .WriteTo.Console()
                .WriteTo.File("logs/log.txt", rollingInterval: RollingInterval.Day)
                .CreateLogger();

在类代码或者界面代码中,直接通过方法输出日志信息即可。

   //使用Serilog记录日志信息
   Serilog.Log.Information(json);

它和其他Log组件,如Log4net一样,它的使用区分类别来输出不同类型的日志,支持Verbose、Debug、Information、Error、Warning、Fatal 几个接口的输出。

在Winform项目和Web API的.NetCore项目中使用Serilog 来记录日志信息第3张

Serilog.Log.Verbose("verbose"); //用于跟踪信息和调试细节,不会输出显示出来

//以下为常用记录日志方法
Serilog.Log.Information("info");
Serilog.Log.Debug("debug");
Serilog.Log.Warning("warning");
Serilog.Log.Error("err");
Serilog.Log.Fatal("fatal");

输出日志信息如下所示。

在Winform项目和Web API的.NetCore项目中使用Serilog 来记录日志信息第4张

Serilog 如果想个性化设置日志输出到什么地方,需要引用一些serilog的接收器。Serilog的输出对象称之为Sink

Github上提供了大量的Serilog第三方的可用sinks,这里简单的列举几个常用的:

2、在.NetCore项目的Web API中整合Serilog

在.netcore的Web API项目中配置和上面的有一些差异,引入相关的Serilog组件类库,如下所示。

在Winform项目和Web API的.NetCore项目中使用Serilog 来记录日志信息第5张

其中需要在IHostBuilder或者IWebHostBuilder中注入Serilog接口,如下初始化代码所示。

在Winform项目和Web API的.NetCore项目中使用Serilog 来记录日志信息第6张

在Web API的控制器中使用代码如下所示

    /// <summary>
    ///用于接收长语音信息回调的处理
    /// </summary>
[ApiController]
    [Route("[controller]")]
    public classLongVoiceController : ControllerBase
    {
        private readonly ILogger<LongVoiceController>_logger;

        public LongVoiceController(ILogger<LongVoiceController>logger)
        {
            _logger =logger;
        }

        /// <summary>
        ///测试控制器,路由:get /longvoice
        /// </summary>
        /// <returns></returns>
[HttpGet]
        public List<string>TestList()
        {
            return new List<string>()
            {
                "测试列表接口",
                "检查控制器正常"};
        }

        /// <summary>
        ///回调写入结果, 路由:post /longvoice
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
[HttpPost]
        public async Task<CommonResultDto>CallBack(LongVoiceResultDto input)
        {
            CommonResultDto result = null;
            var json =JsonConvert.SerializeObject(input, Formatting.Indented);
            _logger.LogInformation(json);

            result = new CommonResultDto(0, "操作成功");
            return awaitTask.FromResult(result);
        }
    }

我们注意到直接使用web API 的 IIogger<T>接口调用写日志即可。

_logger.LogInformation(json);

这样我们可以看到相关的日志输出

在Winform项目和Web API的.NetCore项目中使用Serilog 来记录日志信息第7张

免责声明:文章转载自《在Winform项目和Web API的.NetCore项目中使用Serilog 来记录日志信息》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇java的输入输出端口扫描工具nmap下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

WinForm控件之【TreeView】

基本介绍 标签项的分层集合控件(树形控件),节点可加载图片显示。 常设置属性 CheckBoxes:树节点旁是否显示复选框; FullRowSelect:指示突出显示是否跨越树视图控件的整个宽度; Indent:每个子树节点级别的缩进距离; ItemHeight:树视图控件中每个树节点的高度; LabelEdit:指示是否可以编辑树节点的标签文本; Scr...

华为/H3C Syslog配置

H3C交换机的设置举例1. 组网需求将系统的日志信息发送到 linux 日志主机;日志主机的IP 地址为1.2.0.1/16;信息级别高于等于 informational 的日志信息将会发送到日志主机上;日志信息的输出语言为英文,允许输出信息的模块为ARP 和 CMD。2. 组网图3. 配置步骤(1) 设备上的配置。# 开启信息中心。<Sysname...

Winform中自定义xml配置文件,并配置获取文件路径

场景 在Winform程序中,需要将一些配置项存到配置文件中,这时就需要自定义xml的配置文件格式。并在一些工具类中去获取配置文件的路径并加载其内容。 关注公众号霸道的程序猿获取编程相关电子书、教程推送与免费下载。 实现 首先在项目下新建文件夹,命名为config,然后右键添加xml文件。 自定义xml节点内容如下 <?xml version="1...

搭建elk+logstash+kafka+filebeat日志收集平台

目录 前言 组件介绍 原理图 环境介绍 安装 日志收集与展示 前言 在日常的运维过程中,对系统日志和业务日志的处理比较重要,对于以后的数据分析、排查异常问题有很重的作用。今天就分享一个自己基于kafka+ELK+filebeat的日志记录分析平台。 组件介绍 Elasticsearch Elasticsearch(ES)是一个基于Lucen...

MySQL数据库事务各隔离级别加锁情况--read committed &amp;amp;&amp;amp; MVCC(转)

本文转自https://m.imooc.com/article/details?article_id=17290 感谢作者 上篇记录了我对MySQL 事务 隔离级别read uncommitted的理解。这篇记录我对 MySQL 事务隔离级别 read committed & MVCC 的理解。 前言 可以很负责人的跟大家说,MySQL 中的...

(转)SQL SERVER 日志已满的处理方法

本文转载自:http://www.cnblogs.com/eycbest/archive/2012/01/04/2311567.html 事务日志文件Transaction Log File是用来记录数据库更新情况的文件,扩展名为ldf。在 SQL Server 7.0 和 SQL Server 2000 中,如果设置了自动增长功能,事务日志文件将会自动扩...