『SEQ日志』在 .NET中快速集成轻量级的分布式日志平台

news2024/11/19 16:43:36

请添加图片描述

请添加图片描述
📣读完这篇文章里你能收获到

  • 如何在Docker中部署 SEQ:介绍了如何创建和运行 SEQ 容器,给出了详细的执行操作
  • 如何使用 NLog 接入 .NET Core 应用程序的日志:详细介绍了 NLog 和 NLog.Seq 来配置和记录日志的步骤
  • 日志记录示例:博客提供了一个简单的日志记录示例,展示了如何在应用程序中使用 NLog 记录日志发送到SEQ

请添加图片描述

文章目录

  • 一、简介
  • 二、SEQ部署
    • 1. 下载SEQ Docker镜像
    • 2. 生成SEQ密码
    • 3. 创建SEQ容器
    • 4. 访问SEQ Web界面
    • 5. 创建日志源APP Key
  • 三、.NET Core接入(NLog)
    • 1. 添加依赖包
    • 2. 配置nlog.config
    • 3. 在Startup.cs文件中启用NLog
    • 4. 日志记录
  • 四、SEQ查询
    • 1. 事件查询
    • 2. 看板制作
  • 五、总结

请添加图片描述
摘要:本文介绍了如何使用SEQ来进行.NET Core应用程序的日志记录和查询。首先,我们将了解SEQ的基本概念和功能。然后,我们会详细说明如何在.NET Core应用程序中配置和部署SEQ,并通过示例代码演示如何实现日志记录和查询。

一、简介

SEQ是一款功能强大的日志管理工具,它提供了易于使用的Web界面和灵活的查询语法,帮助开发人员更好地理解和分析应用程序的日志信息。在本文中,我们将使用SEQ来记录和查询.NET Core应用程序的日志。

请添加图片描述

二、SEQ部署

1. 下载SEQ Docker镜像

sudo docker pull datalust/seq:latest

2. 生成SEQ密码

PH=$(echo 'password' |sudo docker run --rm -i datalust/seq config hash)

3. 创建SEQ容器

sudo mkdir -p data/logs

sudo docker run \
  --name seq \
  -d \
  --restart unless-stopped \
  -e ACCEPT_EULA=Y \
  -e SEQ_FIRSTRUN_ADMINPASSWORDHASH="$PH" \
  -v /data/log-prod:/data \
  -p 8001:80 \
  -p 5341:5341 \
  --memory=16g  \
  --memory-swap=16g  \
  datalust/seq

上面的docker运行脚本中有几个点需要注意的:

  • Seq存储的数据包括元数据和事件数据,元数据指用户信息、Seq配置等数据,事件数据指收集到的日志数据。这两种数据默认都是直接存储在磁盘上的,所以在容器启动时,需要将数据存储的路径映射到宿主机上。事件数据只能存储在磁盘上,而元数据有需要的话可以存储到sqlserver或者postgresql,可以在容器启动之后进入容器对元数据进行迁移,可以在容器启动时通过环境变量的方式指定存储路径,如下:
-e SEQ_METASTORE_POSTGRES_CONNECTIONSTRING="Host=localhost;Port=5432;Database=seq"
  • Seq实例在不指定最大内存的情况下会尽可能的占用宿主机尽可能多的内存,为了保证实例能够稳定运行,不会因为内存问题退出或者被杀掉,也为了不影响其他应用,可以为seq实例设置可用的最大内存,而通过seq提供的环境变量SEQ_CACHE_SYSTEMRAMTARGET可以配置seq是否使用缓存,在为seq容器分配的内存比较少的情况下,可以不适应缓存。

4. 访问SEQ Web界面

SEQ容器启动后,打开浏览器并输入http://localhost:8001,即可进入SEQ的Web界面。
image.png

5. 创建日志源APP Key

在SEQ的Web界面中,我们需要为每个应用程序创建一个独立的日志源。通过点击界面右上角的"Add +"按钮,可以创建一个新的日志源,并记录下该日志源的API密钥,以便后续在.NET Core应用程序中进行配置。
image.png
image.png

请添加图片描述

三、.NET Core接入(NLog)

1. 添加依赖包

在.NET Core应用程序的项目文件中,添加NLog和NLog.Seq的NuGet包引用。可以使用以下命令在项目文件中添加NuGet包引用:

dotnet add package NLog
dotnet add package NLog.Web.AspNetCore
dotnet add package NLog.Targets.Seq

2. 配置nlog.config

<?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="info"
      throwConfigExceptions="true">

	<extensions>
		<add assembly="NLog.Web.AspNetCore"/>
		<add assembly="NLog.Targets.Seq"/>
	</extensions>

	<variable name="OwnWebLayout"
			  value="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}"/>

	<targets async="true">
		<target name="seq" xsi:type="BufferingWrapper" bufferSize="1000" flushTimeout="2000">
			<target xsi:type="Seq" serverUrl="http://localhost:5341" apiKey="" >
				<property name="MachineName" value="${machinename}" />
				<property name="LogType" value="${event-properties:item=LogType}" />
			</target>/>
		</target>
	</targets>

	<rules>
		<logger name="*" minlevel="Debug" writeTo="seq" />
	</rules>
</nlog>

3. 在Startup.cs文件中启用NLog

using NLog.Extensions.Logging;

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        // 其他配置...

        // 启用NLog
        services.AddLogging(loggingBuilder =>
        {
            loggingBuilder.ClearProviders();
            loggingBuilder.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace);
            loggingBuilder.AddNLog();
        });
    }
}

4. 日志记录

private readonly ILogger<HomeController> _logger;

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

public IActionResult Index()
{
    _logger.LogInformation("Index page visited");

    // 应用程序逻辑...

    return View();
}

请添加图片描述

四、SEQ查询

1. 事件查询

在SEQ的Web界面中,可以使用简单而强大的查询语法来过滤和分析日志。例如,可以通过关键词、日期范围或其他属性进行过滤。以下是一些常用的查询示例:

  • 查询包含特定关键词的日志:“关键词”
  • 查询特定级别的日志:@Level = “级别”

image.png

2. 看板制作

image.png

请添加图片描述

五、总结

本文介绍了如何使用SEQ来记录和查询.NET Core应用程序的日志。通过部署SEQ并在.NET Core应用程序中配置日志记录,可以轻松地将应用程序的日志发送到SEQ中,并使用SEQ的强大查询功能对日志进行分析和筛选。希望本文能帮助你更好地管理和利用应用程序的日志信息。

  • 附SEQ官方的文档:https://docs.datalust.co/docs

请添加图片描述

请添加图片描述

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

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

相关文章

微服务中间件--MQ

MQ MQa.安装RabbitMQb.消息模型c.SpringAMQP发送和接收d.WorkQueue模型e.发布订阅模型1) FanoutExchange2) DirectExchange3) TopicExchange f.消息转换器 MQ 同步调用的问题 微服务间基于Feign的调用就属于同步方式&#xff0c;存在一些问题。 耦合度高&#xff1a;每次加入…

【网络安全】防火墙知识点全面图解(二)

本系列文章包含&#xff1a; 【网络安全】防火墙知识点全面图解&#xff08;一&#xff09;【网络安全】防火墙知识点全面图解&#xff08;二&#xff09; 防火墙知识点全面图解&#xff08;二&#xff09; 21、路由器的访问控制列表是什么样的&#xff1f;22、防火墙的安全策…

java电子病历源码 电子病历编辑器源码 病历在线制作、管理和使用

电子病历在线制作、管理和使用的一体化电子病历解决方案&#xff0c;通过一体化的设计&#xff0c;提供对住院病人的电子病历书写、保存、修改、打印等功能。电子病历系统将临床医护需要的诊疗资料以符合临床思维的方法展示。建立以病人为中心&#xff0c;以临床诊疗信息为主线…

【WebSocket】前端使用WebSocket实时通信

目录 前言什么是WebSocketWebSocket的工作原理WebSocket与HTTP的关系HTTP建立持久化连接WebSocket类封装 前言 最近写项目&#xff0c;需要实现消息通知和实时聊天的功能&#xff0c;就去了解了一些关于websocket的知识&#xff0c;总结如下。 什么是WebSocket WebSocket 是一…

Prometheus 监控系统

常用的监控系统有哪些&#xff1f; 老牌传统 Zabbix Nagios Cacti 新一代的 Prometheus 夜莺 Zabbix 和 Prometheus 的区别&#xff1f;如何选择&#xff1f;【重中之重】 Zabbix 更适用于传统业务架构的物理机、虚拟机环境的监控&#xff0c;对容器环境的支持较差&#xf…

5.从头跑一个pipeline

1.安装torch pip install torchvision torch PyTorch的torchvision.models模块中自带的很多预定义模型。torchvision 是PyTorch的一个官方库&#xff0c;专门用于处理计算机视觉任务。在这个库中&#xff0c;可以找到许多常用的卷积神经网络模型&#xff0c;包括ResNet、VGG、…

【Eclipse】汉化简体中文教程(官方汉化包,IDE自带软件安装功能),图文详情

目录 0.环境 1.步骤 1&#xff09;查看eclipse的版本 2&#xff09;在官网找语言包&#xff0c;并复制链接 3&#xff09;将链接复制到eclipse中 4&#xff09;汉化完成 0.环境 windows11&#xff0c;64位&#xff1b; eclipse 2021-6版本 1.步骤 思路&#xff1a;在官网找…

【FAQ】云存储EasyCVR视频汇聚平台分发rtsp流时,出现“用户已过期”提示该如何解决?

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。音视频流媒体视频平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视频录像、…

2023-8-23 合并集合

题目链接&#xff1a;合并集合 #include <iostream>using namespace std;const int N 100010;int n, m; int p[N];int find(int x) {if(p[x] ! x) p[x] find(p[x]);return p[x]; }int main() {cin >> n >> m;for(int i 1; i < n; i) p[i] i;while(m…

webrtc的Sdp中的Plan-b和UnifiedPlan

在一些类似于视频会议场景下&#xff0c;媒体会话参与者需要接收或者发送多个流&#xff0c;例如一个源端&#xff0c;同时发送多个左右音轨的音频&#xff0c;或者多个摄像头的视频流&#xff1b;在2013年&#xff0c;提出了2个不同的SDP IETF草案Plan B和Unified Plan&#x…

云服务器(Centos7系统)配置JAVA+mysql+tomcat 环境

文章主要内容来源云服务器&#xff08;Centos7系统&#xff09;部署javaweb项目&#xff08;二&#xff09;配置JAVAmysqltomcat 环境_man_zuo的博客-CSDN博客 模仿途中遇到的问题 连接无效 有时连接无法下载&#xff0c;可能是过期了&#xff0c;将其更换为官网给的下载连接即…

精准高效农业作业,植保无人机显身手

中国作为农业大国&#xff0c;拥有约18亿亩的农田&#xff0c;每年都需要进行种子喷洒和农药施用等农业作业&#xff0c;对于普通农户来说&#xff0c;这是一项耗时耗力的工程&#xff0c;同时&#xff0c;人工喷洒农药极易造成农药慢性中毒&#xff0c;对农民的身体健康产生极…

Linux 虚拟机安装 hadoop

目录 1 hadoop下载 2 解压hadoop 3 为 hadoop 文件夹改名 4 给 hadoop 文件夹赋权 5 修改环境变量 6 刷新环境变量 7 在hadoop313目录下创建文件夹data 8 检查文件 9 编辑 ./core-site.xml文件 10 编辑./hadoop-env.sh文件 11 编辑./hdfs-site.xml文件 12 编辑./mapr…

python并发编程

一、程序提速的方法 二、python对并发编程的支持 多线程&#xff1a;threading&#xff0c;利用CPU和IO可以同时执行的原理&#xff0c;让CPU不会干巴巴等待IO完成&#xff1b;多进程&#xff1a;multiprocess&#xff0c;利用多核CPU的能力&#xff0c;真正的并行执行任务&am…

大数据Flink(六十六):Flink的重要概念和小结

文章目录 Flink的重要概念和小结 一、​​​​​​​​​​​​​​数据流图(Dataflow Graph)

三维模拟推演电子沙盘虚拟数字沙盘开发教程第13课

三维模拟推演电子沙盘虚拟数字沙盘开发教程第13课 该数据库中只提供 成都市火车南站附近的数据请注意&#xff0c;104.0648,30.61658 在SDK中为了方便三方数据的接入&#xff0c;引入了一个用户层接口。主要是完成三方数据的接入&#xff0c;含动态数据&#xff08;如GPS&…

Shopee卖家开店后用知虾shopee抢占市场!

​ Shopee卖家在实际操作时需要根据自己的情况和行业特点进行具体的操作和决策&#xff0c;这里分享知虾shopee运营方法&#xff1a; 市场研究&#xff1a;了解知虾shopee平台上的市场趋势、受众需求和竞争情况。观察热门品类、畅销产品以及受欢迎的品牌&#xff0c;找到有潜力…

如何使用CSS实现一个水平居中和垂直居中的布局?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 水平居中布局⭐ 垂直居中布局⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那些对Web开发感兴趣…

设计模式(3)抽象工厂模式

一、概述&#xff1a; 1、提供一个创建一系列相关或相互依赖对象的接口&#xff0c;而无须指定它们具体的类。 2、结构图&#xff1a; 3、举例代码&#xff1a; &#xff08;1&#xff09; 实体&#xff1a; public interface IUser {public void insert(User user);public…