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

360影视 2025-01-24 09:31 2

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

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

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

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

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

访问 即可看到 Seq 管理界面。

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

使用 Serilog 集成

1. 添加 NuGet 包安装Serilog.Sinks.Seq包:

dotnet add package Serilog.Sinks.Seq

2. 配置 SerilogProgram.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 classTestController : ControllerBase
{
privatereadonly ILogger _logger;

public TestController(ILogger logger)
{
_logger = logger;
}

[HttpGet("TestLogSeq")]
publicstringTestLogSeq
{
_logger.LogInformation("这是一条测试日志。");
return"ok";
}
}使用 NLog 集成

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


nlogxmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
targets
targetxsi:type="Seq" serverUrl="http://localhost:5380" apiKey="your_api_key" />
targets
rules
loggername="*" minlevel="Debug" writeTo="seq" />
rules
nlog

2. 启用 NLogProgram.csStartup.cs中启用 NLog:

public static IHostBuilder CreateHostBuilder(string args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup;
})
.UseNLog;

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

public classTestController : ControllerBase
{
privatereadonly ILogger _logger;

public TestController(ILogger logger)
{
_logger = logger;
}

[HttpGet("TestLogSeq")]
publicstringTestLogSeq
{
_logger.LogInformation("这是一条测试日志。");
return"ok";
}
}

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

@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 官方文档

来源:opendotnet

相关推荐