ABP:内置logger and 第三方库serilog 之间的关系

news2024/11/25 4:54:13

今天在看项目的日志记录功能,比较疑惑为什么项目中有的地方使用 Logger< T > _logger 然后又在资源文件下看见日志的第三方库 Serilog

解答:

ASP.NET Core Build-in Logging
ASP.NET Core 提供了 Logging 的抽象接口, third party 都会依据抽象来做实现. ASP.NET Core 自己也实现了一套简单的 log, 它只能 log to console. 不能 log to file.

只能输出到控制台,但是不能输出到文件

所以绝大部分项目都会搭配一个 third party library, 比如 Serilog.

Serilog 的 config 不是通过 appsetting 设置的,

如果想用 appsetting 来管理可以另外安装一个 DLL

dotnet add package Serilog.Settings.Configuration 

appsetting 里的 log config 是给 ASP.NET Core build-in log 的, Serilog 不会读取它来用.

所以第0步:装Serilog

dotnet add package Serilog.AspNetCore

第1步:新建一个文件覆写内置的log功能

using System;
using System.IO;
using Serilog;
using Serilog.Events;

namespace UIH.RT.HRuiJin.Log
{
    public class SerilogByMySelf :  ILogger // 看吧serilog要接盘内置的log
    {
        private readonly Serilog.Core.Logger _logger;
        private const string logFilePath = "文件路径.txt";
        protected string logFileFolder = "日志文件夹的名字";
        protected string date = DateTime.Today.ToString("yyyyMMdd");

        protected virtual string LogFilePath => Path.Combine(logFolderName, date, logFilePath);


        public SerilogByMySelf()
        {
            _logger = new LoggerConfiguration()
                .MinimumLevel.Verbose()
                .MinimumLevel.Override("Microsoft", LogEventLevel.Information)
                .MinimumLevel.Override("Microsoft.EntityFrameworkCore", LogEventLevel.Warning)
                .WriteTo.Async("写你的文件路径")
                .CreateLogger();
        }

        // 接盘之后也可以加自定义操作
        public void Warning(object obj)
        {
            _logger.Warning(obj.ToString());
        }

    }
}

第2步:go to the  program.cs 去程序的入口配置

解决答案REF:c# - Use Serilog with Microsoft.Extensions.Logging.ILogger - Stack Overflow

    public class Program
    {
        public static int Main(string[] args)
        {
            SeriLog.Logger = new SerilogFucker();

        internal static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder => webBuilder.UseStartup<Startup>()})
                .UseSerilog(); // 这一行最重要!!!
    }

关于内置logger的资料 :ASP.NET Core 源码学习之 Logging[1]:Introduction - 雨夜朦胧 - 博客园

现在面临的问题:

1. 对于微服务的调用记录,存储方式如何? 文件 or 数据库

2. 如果是文件,改代码最方便的方法是新建一个 “Api_History” 文件,在调用proxy api时候对每一个方法手动地添加 _logger.info( ) 

3. 或者适配器模式,抽象出一个适配器类 or 桥接类 or super class虚方法?

4.或者ABP的审计更合适?

2022/12/1

得,问了问TeamLeader, 方法函数内纯手打就行了。直接干就完事了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/53182.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DJ 12-3 程序控制指令

目录 1. 无条件转移指令 JMP &#xff08;1&#xff09;段内直接转移 &#xff08;2&#xff09;段内间接转移 &#xff08;3&#xff09;段间直接转移 &#xff08;4&#xff09;段间间接转移 2. 条件转移指令 3. 循环控制指令 &#xff08;1&#xff09;LOOP 指令 &…

R语言中不同类型的聚类方法比较

聚类方法用于识别从营销&#xff0c;生物医学和地理空间等领域收集的多变量数据集中的相似对象。我们围绕聚类技术进行一些咨询&#xff0c;帮助客户解决独特的业务问题。它们是不同类型的聚类方法&#xff0c;包括&#xff1a; 划分方法分层聚类模糊聚类基于密度的聚类基于模…

Qt Creator 的 Shadow build(影子构建)

目录 一、什么是影子构建 二、如何取消影子构建 一、什么是影子构建 做wpf项目时&#xff0c;项目里面会有bin文件夹&#xff0c;里面有debug和release文件夹&#xff0c;生成的exe就在debug或release里面&#xff0c;但第一次做qt时&#xff0c;发现项目文件夹里面只有源码文…

2022 JuiceFS 社区用户调研结果出炉

为了使 JuiceFS 的发展更贴合用户的真实需求&#xff0c;我们在三周前向社区发出了一份调研问卷。此次调研面向已经将 JuiceFS 应用于生产环境的用户&#xff0c;了解其在应用 JuiceFS 前和使用中的体验与评价。 参与此次调研的用户&#xff0c;大型企业占比最高&#xff0c;有…

李炎恢ECMAScript6 / ES6+(一)

01. ECMAScript6 简介和历史 学习要点&#xff1a; 1.ES6 简介 2.ECMAScript 历史 3.学习和创建 Demo 本节课我们来开始了解 ECMAScript6(简称 ES6)&#xff0c;着重了解它的标准和历史。 一&#xff0e;ES6 简介 ECMAScript6 简称 ES6&#xff0c;是 JavaScript 语言的下一…

Vue3项目引入 vue-quill 编辑器组件并封装使用

这是一款支持Vue3的富文本编辑器 GitHub地址&#xff1a;https://github.com/vueup/vue-quill/ VueQuill官网&#xff1a;https://vueup.github.io/vue-quill/ // 查看 vueup/vue-quill 版本 npm view vueup/vue-quill versions --json// 导入 vueup/vue-quill 依赖包 npm i v…

试编写算法(用C语言)打印值为x的结点的所有祖先,假设值为x的结点不多于一个。(递归实现和非递归实现)

&#xff08;一&#xff09;递归实现&#xff1a; 完整代码&#xff1a; #include<stdio.h> #include<stdlib.h> #include<iostream> using namespace std;#define MaxSize 100 typedef int ElemType; typedef struct BiNode {ElemType data;BiNode* lchil…

基于springboot摄影跟拍预定管理系统设计与实现的源码+文档

摘要 首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库设计。…

最新版k8s 1.25版本安装

简介 Kubernetes&#xff08;k8s&#xff09;是自动化容器操作的开源平台。这些容器操作包括&#xff1a;部署、调度和节点集群间扩展。 具体功能&#xff1a; 自动化容器部署和复制。实时弹性收缩容器规模。容器编排成组&#xff0c;并提供容器间的负载均衡。 总而言之&…

PHP基于thinkphp的教材管理系统#毕业设计

教材是每个学生和学校都必须具备的教学资源之一,它是知识的载体,是学生汲取知识的土壤,好的教材可以做到事半功倍的效果。但是通常情况下教材都是批量进行购买和发放的,为了能够更好的对教材信息进行管理,我们通过PHP语言,thinkphp框架开发了本次的教材管理系统 教材管理系统,…

谷粒学苑_第十一天

要开始做前台部分(用户环境) 之前我们用的后台前端框架是vue-admin-template 这次的前台框架是用的NUXT 轮播图实现 显示课程和老师 redis缓存 NUXT 服务端渲染技术 解压guli_site 在这里我们使用的是成品,页面也基本写好 然后下载依赖: 开始运行: npm rum dev后面…

[附源码]Python计算机毕业设计Django高校车辆管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

力扣(LeetCode)123. 买卖股票的最佳时机 III(C++)

前后缀分解 维护前缀和数组&#xff0c;保存 111~iii 天&#xff0c;买卖一次的最大利润。维护后缀和数组&#xff0c;保存 iii~nnn 天买卖一次的最大利润。枚举所有分界点 iii &#xff0c;买卖两次的最大利润 iii 的前缀和 i\ i i 的后缀和 111~iii 天买卖一次的最大利润 i\…

Mock测试

1、什么是mock测试 Mock 测试就是在测试活动中&#xff0c;对于某些不容易构造或者不容易获取的数据/场景&#xff0c;用一个Mock对象来创建以便测试的测试方法。 2、Mock测试常见场景 &#xff08;1&#xff09;无法控制第三方系统接口的返回&#xff0c;返回的数据不满足要…

Tomcat的安装、在idea中的使用以及创建Web项目

目录Tomcat的安装Tomcat运行Tomcat在idea中的使用创建Web项目最后Tomcat的安装 Tomcat的官网: https://tomcat.apache.org/ 从官网上可以下载对应的版本进行使用。 下载windows64位&#xff0c;版本自行选择。 下载好之后找到压缩包进行解压&#xff0c;注意目录不要有中文且…

MFC文件操作

MFC提供了一个文件操作的基类CFile&#xff0c;这个类提供了一个没有缓存的二进制格式的磁盘输入输出功能。通过他的派生类可以间接的支持文本、文件、内存文件等。 打开文件 通过对CFile类的初始化&#xff0c;即可完成文件的打开 CFile类的其中一个构造函数&#xff1a; …

【论文精读】A Survey on Deep Learning for Named Entity Recognition

A Survey on Deep Learning for Named Entity Recognition前言Abstract1. INTRODUCTION2. BACKGROUND2.1 What is NER?2.2 NER Resources: Datasets and Tools2.3 NER Evaluation Metrics2.3.1 Exact-Match Evaluation2.3.2 Relaxed-Match Evaluation2.4 Traditional Approach…

Docker学习教程

学前准备 &#x1f47f; Linux 基础 &#x1f47f; SpringBoot 基础 文章目录[toc]1. Docker 概述1.1 docker 为什么出现1.2 Docker 容器和虚拟机的不同1.3 Docker 能做什么2. Docker 安装2.1 Docker 的组成3. Docker 命令3-1 安装Nginx3-2 安装mysql3-3 安装java &#xff0c…

八、【React拓展】错误边界

理解 错误边界(Error boundary)&#xff1a;用来捕获后代组件错误&#xff0c;渲染出备用页面 如果你的组件内写了包含子组件&#xff0c;一个子组件内部发生了错误就会导致整个页面挂掉&#xff08;报错&#xff09;&#xff0c;限制这种错误影响其他组件&#xff08;就是限制…

10-18-hive-元数据及其他方式与hive交互

10-hive-元数据及其他方式访问hive&#xff1a; 使用元数据服务的方式访问 Hive (类似将hive提供了一个服务端) 1&#xff09;在hive-site.xml 文件中添加如下配置信息 <!-- 指定存储元数据要连接的地址 --> <property> <name>hive.metastore.uris</nam…