首页 > 编程语言 >Seq 日志: .NET 应用程序中集成与快速入门

Seq 日志: .NET 应用程序中集成与快速入门

时间:2025-01-23 13:42:33浏览次数:1  
标签:Seq seq Serilog public NET logger 日志

Seq 是一个功能强大且易于使用的日志服务器,特别适合用于集中管理和可视化 .NET 应用程序的日志。它支持结构化日志记录,提供实时查询和分析功能,帮助开发者快速定位和解决问题。

安装和配置 Seq

  • Windows 部署

    可以从 Seq 下载页面:https://datalust.co/download 获取最新版本并按照说明进行安装。

  • Docker 部署

    创建 Docker 数据卷并启动 Seq 容器:

    docker volume create seq-data
    docker run --name seq -d --restart=always -e ACCEPT_EULA=Y -v seq-data:/data -p 5380:80 datalust/seq:2023.3
    

    访问 http://localhost:5380 即可看到 Seq 管理界面。

  • Linux 部署

    请参考 Seq 官方文档 获取详细的安装步骤。

界面

安装完成后进入管理界面:http://localhost:5341/

首页

仪表盘板

在 .NET Core 中集成 Seq

使用 Serilog 集成
  1. 添加 NuGet 包

    安装 Serilog.Sinks.Seq 包:

    dotnet add package Serilog.Sinks.Seq
    
  2. 配置 Serilog

    Program.cs 文件中配置 Serilog 以将日志发送到 Seq 服务器:

    using Serilog;
    
    Log.Logger = new LoggerConfiguration()
        .MinimumLevel.Debug() // 设置最低日志级别为 Debug
        .WriteTo.Seq("http:// seq-server-url") // 替换为你的 Seq 服务器地址
        .CreateLogger();
    
    try
    {
        Log.Information("应用程序启动");
        // 你的应用程序代码
    }
    catch (Exception ex)
    {
        Log.Fatal(ex, "应用程序意外终止");
    }
    finally
    {
        Log.CloseAndFlush();
    }
    
  3. 记录日志

    在控制器或服务中使用 ILoggerLog 记录日志:

    public class TestController : ControllerBase
    {
        private readonly ILogger<TestController> _logger;
    
        public TestController(ILogger<TestController> logger)
        {
            _logger = logger;
        }
    
        [HttpGet("TestLogSeq")]
        public string TestLogSeq()
        {
            _logger.LogInformation("这是一条测试日志。");
            return "ok";
        }
    }
    
使用 NLog 集成
  1. 配置 NLog

    在项目根目录添加 nlog.config 文件,并配置 Seq 作为目标:

    <?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">
      <targets>
        <target xsi:type="Seq" serverUrl="http://localhost:5380" apiKey="your_api_key" />
      </targets>
      <rules>
        <logger name="*" minlevel="Debug" writeTo="seq" />
      </rules>
    </nlog>
    
  2. 启用 NLog

    Program.csStartup.cs 中启用 NLog:

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            })
            .UseNLog();
    
  3. 记录日志

    同样,在控制器或服务中使用 ILogger 记录日志:

    public class TestController : ControllerBase
    {
        private readonly ILogger<TestController> _logger;
    
        public TestController(ILogger<TestController> logger)
        {
            _logger = logger;
        }
    
        [HttpGet("TestLogSeq")]
        public string TestLogSeq()
        {
            _logger.LogInformation("这是一条测试日志。");
            return "ok";
        }
    }
    

Seq 日志查询

Seq 提供了强大的查询功能,支持类似 SQL 的语法:

  • 查询包含特定关键词的日志

    @Message like '%keyword%'
    
  • 查询特定级别的日志

    @Level = 'Error'
    
  • 查询特定服务的日志

    app = 'service_name'
    
  • 聚合查询

    select count(*) as ErrorCount from stream where @Level = 'Error' group by @timestamp.day
    

缺点

  • 性能和资源限制:高负载下可能面临性能瓶颈,对内存和资源管理要求较高。
  • 功能限制:免费版功能受限,付费版价格较高。
  • 安全问题:默认使用HTTP,需额外配置SSL/TLS保障数据安全。

总结

通过以上操作,可以快速在 .NET Core 应用中集成 Seq,并利用其强大的日志聚合和查询功能提升开发和运维效率。作为日志系统,免费版本的基础功能已经足够使用 。更多高级功能和配置可以参考 Seq 官方文档

https://docs.datalust.co/docs/an-overview-of-seq

标签:Seq,seq,Serilog,public,NET,logger,日志
From: https://www.cnblogs.com/netcore5/p/18687653

相关文章

  • 【问题记录】JVM进程崩溃(hs_err_pid.log致命错误日志)
    一个使用kafka的Java项目,在Windows环境启动后不久出现进程崩溃的情况,反复验证偶发的能得到hs_err_pid.log致命错误日志,始终没有生成coredump。通过错误日志确实看到了导致崩溃的线程堆栈跟kafka客户端有关,但栈顶显示当前在执行native本地代码,我们分别替换了kafka-clients的历史版......
  • 【Linux日志】syslog协议的Linux系统日志服务程序使用
    一、什么是syslog协议syslog协议为网络设备间传输日志信息提供了标准化解决方案。借助该协议,服务器、路由器、防火墙等各类设备能够将日志消息发送至中央日志服务器,实现日志的集中管理与分析。下面为您详细介绍syslog协议的关键概念和组成部分:1.协议版本RFC3164:早期的s......
  • FlaUI:.NET 自动化测试 Windows 应用的强大工具
    FlaUI是一个基于微软UIAutomation技术的.NET库,主要用于对Windows应用程序(如Win32、WinForms、WPF等)进行自动化UI测试。它提供了强大的元素查找和交互功能,支持多种框架,并且易于使用和定制。内部采用异步调用以提高效率,社区也非常活跃。安装确保已安装.NET环境:FlaUI......
  • ASP.NET Core 中基于 Cookie 的身份鉴权实现步骤
    在ASP.NETCore应用中,基于Cookie的身份鉴权是一种常见的身份验证方式,特别适用于传统的Web应用程序。Cookie能够在用户的浏览器中存储身份验证数据,从而在用户访问应用的不同页面时保持登录状态。一、配置Cookie身份验证首先,在Startup.cs或Program.cs文件中配置Cook......
  • ASP.NET Core 使用响应压缩中间件提高程序性能
    20250104_ASP.NETCore使用响应压缩中间件提高程序性能ASP.NETCore中的响应压缩中间件1.什么是响应压缩中间件响应压缩中间件是ASP.NETCore的一部分,它通过应用支持的压缩算法(如Gzip和Brotli)来减小服务器发送到客户端的响应体积。这有助于加速数据传输,尤其适用于大段文本和......
  • ASP.NET Core 中的超时中间件
    ASP.NETCore中的超时中间件在ASP.NETCore中,超时中间件允许为HTTP请求设置超时限制,以提高应用程序的健壮性和响应能力。1.添加超时中间件到应用需要在的服务集合中添加请求超时中间件,再将其添加到请求处理管道中。usingMicrosoft.AspNetCore.Http.Timeouts;varbuilder......
  • ASP.NET Core 快速轻量级的浏览器检测和设备检测库
    在.NETFramework4.7中那样,通过HttpContext.Request的Browser属性轻松获取发起HTTP请求的浏览器信息,ASP.NETCore并未直接提供这一功能,现在有了BrowserDetector这个强大的NuGet包,你可以在ASP.NETCore应用中轻松实现浏览器、设备类型以及操作系统的检测。Browser......
  • .NET开源强大的高级日期和时间库
    NodaTime是一个为.NET设计的开源高级日期和时间库,提供了比.NET框架自带的DateTime和DateTimeOffset更加丰富和可靠的日期时间操作功能。1.安装NodaTime首先,通过NuGet安装NodaTime包:Install-PackageNodaTime2.基本概念NodaTime提供了多种日期和时间类型,主......
  • .Net类型 引用类型
    预定义类型引用类型C#支持两种预定义的引用类型:object和string名称.NET类型说明objectSystem.Object根类型,其他类型都是从它派生而来的(包括值类型)stringSystem.StringUnicode字符串 1.object类型许多编程语言和层次结构都提供了根类型,层次结构中......
  • dotnet 使用 ColorCode 做代码着色器
    本文记录我使用ColorCode开源库简单做一个代码着色器开源库地址:https://github.com/CommunityToolkit/ColorCode-Universal我用的是ColorCode.Core版本,这个版本是无具体UI框架依赖的,于是我就在此基础上,同时做了WPF和Avalonia框架的版本。这两个框架在对ColorCode的......