Graylog: 与 Dot NET 一起使用

如何将 .NET/Serilog 的日志发送到 Graylog

👋 欢迎阅读 Stackhero 文档!

Stackhero 提供现成的 Graylog 云 解决方案,具有众多优势,包括:

  • 包含无限制和专用的 SMTP 电子邮件服务器
  • 只需点击即可轻松完成更新
  • 使用 HTTPS 保护的可定制域名(例如,https://logs.your-company.com)。
  • 专用私有 VM提供的最佳性能和强大安全性

节省时间简化您的生活:只需 5 分钟即可试用 Stackhero 的 Graylog 云托管 解决方案!

Serilog 是一款广受欢迎且高度可扩展的日志库,被广泛用于 .NET 应用程序的日志管理。它允许开发者配置多种 sink(日志输出目标),以便进行日志存储和可视化。

以下是一个演示 Serilog 基本用法的示例:

var log = new LoggerConfiguration()
    .WriteTo.Console()
    .WriteTo.File("log.txt")
    .CreateLogger();

log.Information("Hello, Serilog!");

如果您希望将日志发送到 Graylog 服务器,可以使用 serilog-sinks-graylog 包。该 sink 支持以 GELF 格式直接将日志传输到 Graylog

  1. 安装包

    通过以下命令将 serilog-sinks-graylog 包添加到您的项目中:

    Install-Package serilog.sinks.graylog
    
  2. 配置 Serilog 以对接 Graylog

    使用以下代码片段更新您的应用配置。请将 <XXXXXX>.stackhero-network.com 替换为您的 Graylog 实例域名:

    var loggerConfig = new LoggerConfiguration()
        .WriteTo.Graylog(
            new GraylogSinkOptions
            {
                HostnameOrAddress = "<XXXXXX>.stackhero-network.com",
                Port = 12201
            }
        );
    
  3. 设置 Graylog

    • 登录您的 Graylog 控制台。
    • 进入 System > Inputs
    • 创建一个类型为 "GELF UDP" 的新输入(Input)。
    • 点击 "Launch new input"。在弹出的窗口中,启用 "Global" 选项,为该输入指定一个名称,然后无需更改其他设置,直接保存。

为了提升安全性,建议限制可以连接到 12201 端口的 IP 地址。您可以在 Stackhero 控制台中,选择您的 Graylog 服务,然后在 "Firewall" 设置中,仅允许特定 IP 访问。

按照上述步骤,您的 .NET 应用即可安全高效地将日志发送到您的 Graylog 实例。