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 官方文档。
https://docs.datalust.co/docs/an-overview-of-seq