Seq 日志: .NET 应用程序中集成与快速入门
Seq 是一个功能强大且易于使用的日志服务器,特别适合用于集中管理和可视化 .NET 应用程序的日志。它支持结构化日志记录,提供实时查询和分析功能,帮助开发者快速定位和解决问题。
安装和配置 Seq
• Windows 部署:可以从 Seq 下载页面: 获取最新版本并按照说明进行安装。
• Docker 部署:创建 Docker 数据卷并启动 Seq 容器:
代码语言:javascript代码运行次数:0运行复制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. 记录日志在控制器或服务中使用 ILogger
或 Log
记录日志:
public classTestController : ControllerBase
{
privatereadonly 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=".xsd"
xmlns:xsi=";>
<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.cs
或 Startup.cs
中启用 NLog:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
.UseNLog();
3. 记录日志同样,在控制器或服务中使用 ILogger
记录日志:
public classTestController : ControllerBase
{
privatereadonly ILogger<TestController> _logger;
public TestController(ILogger<TestController> logger)
{
_logger = logger;
}
[HttpGet("TestLogSeq")]
public string TestLogSeq()
{
_logger.LogInformation("这是一条测试日志。");
return"ok";
}
}
Seq 日志查询
Seq 提供了强大的查询功能,支持类似 SQL 的语法:
• 查询包含特定关键词的日志:
代码语言:javascript代码运行次数:0运行复制@Message like '%keyword%'
• 查询特定级别的日志:
代码语言:javascript代码运行次数:0运行复制@Level = 'Error'
• 查询特定服务的日志:
代码语言:javascript代码运行次数:0运行复制app = 'service_name'
• 聚合查询:
代码语言:javascript代码运行次数:0运行复制select count(*) as ErrorCount from stream where @Level = 'Error' group by @timestamp.day
缺点
- • 性能和资源限制:高负载下可能面临性能瓶颈,对内存和资源管理要求较高。
- • 功能限制:免费版功能受限,付费版价格较高。
- • 安全问题:默认使用HTTP,需额外配置SSL/TLS保障数据安全。
总结
通过以上操作,可以快速在 .NET Core 应用中集成 Seq,并利用其强大的日志聚合和查询功能提升开发和运维效率。 作为日志系统,免费版本的基础功能已经足够使用 。 更多高级功能和配置可以参考 Seq 官方文档。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2025-03-13,如有侵权请联系 cloudcommunity@tencent 删除日志入门部署服务配置