.net core使用ocelot---第三篇 日志记录
简介
.net core使用ocelot---第一篇 简单使用
.net core使用ocelot---第二篇 身份验证使用
上篇介绍使用asp.net core 创建API网关。本文将介绍Ocelot的Logging(日志)模块。
为什么日志很重要
软件开发日志是必须的部分,它给开发人员或者维护人员提供代码运行的真实情况。
开发完成以后,研发人员依然需要查找项目应用运行时的错误,足够的日志记录可以让定位问题变得简单。
所以。。。
Ocelot使用标准的日志接口,也实现了一些标准的asp.net core 日志模块。这让我们很容易理解它的日志模块。
好了,说那么多,不如动起来。
Step1
新建两个项目。
|
项目名称 |
项目类型 |
描述 |
|
APIGateway |
ASP.NET Core Empty |
示例入口 |
|
CustomersAPIServices |
ASP.NET Core Web API |
API服务操作用户请求操作 |
创建API Gateway 和CustomerAPIServices和最初的示例一样。
Step2
在appsettings.json中添加如下配置
"Logging": {
"IncludeScopes": true,
"LogLevel": {
"Default": "Trace",
"System": "Information",
"Microsoft": "Information"
}
}
Step3
修改Startup的Configure方法,使控制台日志使用上面的配置
public void Configure(IApplicationBuilder app ,ILoggerFactory loggerFactory)
{
//console logging
loggerFactory.AddConsole(Configuration.GetSection("Logging")); app.UseOcelot().Wait();
}
完成上述步骤后,我们再运行APIGateway并访问一些服务,你会得到类似下图的信息。

可以看出,我们所有的请求都会记录在控制台上。
通过这些信息我们可以分析我们的应用,但是绝大多数时间,我们并不需要这些信息出现在控制台。我们需要
存储这些信息,以便以后随时查看。
下一步,我们将使用NLog去持久化我们的日志。NLog是一款免费的,便于控制的,丰富日志路由的日志平台。
Step4
安装NLog.Web.AspNetCore,为其新建一个配置文件,用于配置NLog的选项。
<?xml version="1.0" encoding="utf-8" ?><nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
autoReload="true"
internalLogLevel="Warn"
internalLogFile="internal-nlog.txt"> <targets>
<target xsi:type="File"
name="debug"
fileName="debug-${shortdate}.log"
layout="${longdate}|${event-properties:item=EventId.Id}|${uppercase:${level}}|${logger}|${message} ${exception}" />
</targets> <rules>
<logger name="*" minlevel="Debug" writeTo="debug" />
</rules>
</nlog>
注意
在配置文件中,我只是将日志信息写入文件,根据你的需求你可以有不同的写入方式,比如,Elasticsearch,PostgreSQL,等等。
接下来,我们需要修改Startup类下的Configure方法,添加配置项,使项目支持NLog。
public void Configure(IApplicationBuilder app ,ILoggerFactory loggerFactory)
{
//console logging
loggerFactory.AddConsole(Configuration.GetSection("Logging")); //nlog logging
loggerFactory.AddNLog();
loggerFactory.ConfigureNLog("nlog.config"); app.UseOcelot().Wait();
}
当你启动APIGateway并访问服务时,NLog会产生一个日志文件,我们可以用notepad等打开。
完工。
源码在此。
奉上网盘:https://pan.baidu.com/s/17sqfGcYx8yEHRL_LwKAUlA
提取码:p3d0
总结
本文介绍如何使用Ocelot的日志模块,包括使用原生和第三方的组件。
.net core使用ocelot---第三篇 日志记录的更多相关文章
- EF Core使用SQL调用返回其他类型的查询 ASP.NET Core 2.0 使用NLog实现日志记录 CSS 3D transforms cSharp:use Activator.CreateInstance with an Interface? SqlHelper DBHelper C# Thread.Abort方法真的让线程停止了吗? 注意!你的Thread.Abort方法真
EF Core使用SQL调用返回其他类型的查询 假设你想要 SQL 本身编写,而不使用 LINQ. 需要运行 SQL 查询中返回实体对象之外的内容. 在 EF Core 中,执行该操作的另一种方法 ...
- SpringBoot之旅第三篇-日志
一.前言 日志对于一个系统的重要性不言而喻,日志能帮我们快速定位线上问题,市场上存在非常多的日志框架,比较常见的有 JUL,JCL,Log4j,Log4j2,Logback.SLF4j.jboss-l ...
- .Net Core 3.0 使用 Serilog 把日志记录到 SqlServer
Serilog简介 Serilog是.net中的诊断日志库,可以在所有的.net平台上面运行.Serilog支持结构化日志记录,对复杂.分布式.异步应用程序的支持非常出色.Serilog可以通过插件的 ...
- Python学习 :常用模块(三)----- 日志记录
常用模块(三) 七.logging模块 日志中包含的信息应有正常的程序访问日志,还可能有错误.警告等信息输出 python的 logging 模块提供了标准的日志接口,你可以通过它存储各种格式的日志, ...
- .Net Core中间件和过滤器实现错误日志记录
1.中间件的概念 ASP.NET Core的处理流程是一个管道,中间件是组装到应用程序管道中用来处理请求和响应的组件. 每个中间件可以: 选择是否将请求传递给管道中的下一个组件. 可以在调用管道中的下 ...
- (4.7)mysql备份还原——深入解析二进制日志(3)binlog的三种日志记录模式详解
关键词:binlog模式,binlog,二进制日志,binlog日志 目录概述 0.binlog概述 查看binlog日志参数设置: show variables like '%log_bin%'; ...
- ASP.NET Core 学习笔记 第三篇 依赖注入框架的使用
前言 首先感谢小可爱门的支持,写了这个系列的第二篇后,得到了好多人的鼓励,也更加坚定我把这个系列写完的决心,也能更好的督促自己的学习,分享自己的学习成果.还记得上篇文章中最后提及到,假如服务越来越多怎 ...
- SpringBoot入门系列:第三篇 日志输出
http://blog.csdn.net/lxhjh/article/details/51752419
- ASP.NET Core 2.0 使用NLog实现日志记录
1.安装NuGet包 1.Install-Package NLog.Web.AspNetCore 2.Install-Package NLog 在csproj中编辑: <PackageRefer ...
随机推荐
- 一个简单的java爬虫
直接上代码: package com.jeecg.util; import java.io.BufferedReader; import java.io.IOException; import jav ...
- Robotics Education and Research at Scale - A Remotely Accessible Robotics Development Platform
张宁 Robotics Education and Research at Scale - A Remotely Accessible Robotics Development Platform链接 ...
- matlab学习笔记4--多媒体文件的保存和读取
一起来学matlab-matlab学习笔记4 数据导入和导出_2 多媒体文件的保存和读取 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用&g ...
- EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器同步输出http-flv协议流是怎么实现的?
http-flv是什么 http-flv是以http为传输协议,flv媒体格式为内容的方式实时下载flv音视频帧.为什么选择flv格式而非mp4?原因是mp4必须要有moov box或者moof bo ...
- clipboard 在 vue 项目中,on 事件监听回调多次执行
clipboard 定义一个全局变量 import ClipboardJS from "clipboard"; if(clipboard){ clipboard.destroy() ...
- Anaconda无法更新
在安装完Anaconda,更新包时 C:\Users\Administrator>conda upgrade --all WARNING: The conda.compat module is ...
- 【视频开发】【Live555】摄像头采集,264编码,live555直播
加入 摄像头采集和264编码,再使用live555直播 1.摄像头采集和264编码 将x264改成编码一帧的接口,码流不写入文件而是直接写入内存中(int Encode_frame 函数中). /* ...
- 最新 大众书网java校招面经 (含整理过的面试题大全)
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.大众书网等10家互联网公司的校招Offer,因为某些自身原因最终选择了大众书网.6.7月主要是做系统复习.项目复盘.Leet ...
- (CSDN迁移) 替换字符串中的空格
题目描述 请实现一个函数,将一个字符串中的空格替换成"%20".例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. public ...
- 使用vue开发微信公众号,解决微信缓存
1.页面加入标红的代码,让页面不缓存 <!DOCTYPE html> <html manifest="IGNORE.manifest"> <head& ...