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 集成
-
添加 NuGet 包
安装
Serilog.Sinks.Seq
包:dotnet add package Serilog.Sinks.Seq
-
配置 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(); }
-
记录日志
在控制器或服务中使用
ILogger
或Log
记录日志: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 集成
-
配置 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>
-
启用 NLog
在
Program.cs
或Startup.cs
中启用 NLog:public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }) .UseNLog();
-
记录日志
同样,在控制器或服务中使用
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 官方文档。
标签:Seq,seq,Serilog,public,NET,logger,日志 From: https://www.cnblogs.com/netcore5/p/18687653