最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

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

网站源码admin9浏览0评论

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 包:

代码语言:javascript代码运行次数:0运行复制
dotnet add package Serilog.Sinks.Seq

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

代码语言:javascript代码运行次数:0运行复制
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 记录日志:

代码语言:javascript代码运行次数:0运行复制
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 作为目标:

代码语言:javascript代码运行次数:0运行复制
<?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. 启用 NLogProgram.csStartup.cs 中启用 NLog:

代码语言:javascript代码运行次数:0运行复制
public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        })
        .UseNLog();

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

代码语言:javascript代码运行次数:0运行复制
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 删除日志入门部署服务配置
发布评论

评论列表(0)

  1. 暂无评论