在Winform项目和Web API的.NetCore项目中使用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 

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

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

    static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Log.Logger = new LoggerConfiguration()
                .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 几个接口的输出。

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

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

 输出日志信息如下所示。

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

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

 

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

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

 

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

 

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

    /// <summary>
    /// 用于接收长语音信息回调的处理
    /// </summary>
    [ApiController]
    [Route("[controller]")]
    public class LongVoiceController : 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 await Task.FromResult(result);
        }
    }

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

_logger.LogInformation(json);

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

 

文章来源:https://www.cnblogs.com/wuhuacong/p/15723774.html

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
管理员
上一篇:WPF开发随笔收录-仿安卓Toast
下一篇:[WPF] 实现一个很久以前流行的按钮样式
评论列表

发表评论

评论内容
昵称:
关联文章

Winform项目Web API.NetCore项目使用Serilog 记录日志信息
ABP VNext框架Winform终端开发客户端授权信息处理
ASP.NET Core web API使用Swagger/OpenAPI(Swashbuckle)
浅析.netcoreConfiguration
YESWEB接口日志记录
Quartz.NET使用
.NET6一些常用组件配置及使用记录,持续更新。。。
.NET大型项目开发必备(5)--Web服务/WebApi负载均衡
Winform使用HttpClient与后端api服务进行交互
Winform开发框架日志管理
YES-WEB快速开发框架,.NET WEB开发平台,高效web项目开发框架
.NETCore-winform 判断是否设计模式
Python 重构Print 日志记录
C#错误异常日志记录到文件
ASP.NET+MVC入门踩坑笔记 (一) 创建项目 项目配置运行 以及简单Api搭建
.NETCore.NET5 MVC使用 Session
.Net Core 5.x Api开发笔记 -- 基础日志(Log4Net)(八)
Winform开启一个http服务,web服务
ABP VNext框架对HttpApi模块控制器进行基类封装
使用.NET 6开发TodoList应用(27)——实现APISwagger文档化

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码