#logging #analytics #statistics #gamedev #log-level #api-bindings #session-management

pogr_tracing_rs

pogr_tracing_rs 是一个Crate,允许从 tracing crate 收集日志,简单易用

7个版本

0.0.35 2024年2月9日
0.0.34 2024年2月9日

#194 in 调试

每月 27 次下载

MIT 许可证

33KB
175

pogr_tracing_rs 的 README

Build Status Crates.io Version Crates.io Total Downloads Crates.io MSRV

pogr_tracing_rs 是一个Rust crate,旨在方便将 POGR 分析平台与应用程序集成。此crate利用 tracing 生态系统收集并发送结构化日志数据到 POGR 平台,为 Rust 应用的监控和调试提供了一种强大的解决方案。

许可证

此项目采用 MIT 许可证。

特性

  • 易于与使用 tracing 生态系统的现有 Rust 应用程序集成。
  • 异步将日志数据提交到 POGR 平台,确保对应用程序性能的影响最小。
  • 支持各种数据类型的结构化日志,包括整数、浮点数、布尔值、字符串和错误。
  • 可自定义日志级别和元数据,允许详细和上下文化的日志信息。
  • 与 POGR 平台的加密会话管理,包括自动会话初始化。

先决条件

在开始之前,请确保已安装以下内容

  • Rust 编程语言(利用 1.70.0 或更高版本)。
  • tokio 运行时,用于异步支持。
  • 访问 POGR 平台,并设置有效的 POGR_ACCESSPOGR_SECRET 环境变量,可在 https://pogr.io 获取。

如何获取开发者访问权限

在alpha阶段激活POGR开发者账户时,请从您的POGR代表处请求开发者密钥,联系邮箱 [email protected] ,我们的discord: https://discord.gg/ymjPaWg4mU ,Twitter: https://twitter.com/pogr_io 或Instagram: https://www.instagram.com/pogr/ 。您可以在主页或设置中使用此密钥。

环境变量

必需变量

  • POGR_ACCESS:这是一个必需的环境变量,用于指定用于与POGR平台进行身份验证的访问密钥。这是在您的应用程序与POGR服务之间建立安全连接所必需的,确保您的日志以安全的方式传输,并且仅由授权用户访问。

  • POGR_SECRET:这是与您的POGR_ACCESS密钥对应的秘密密钥。它与访问密钥一起用于对POGR平台上的请求进行身份验证。秘密密钥应保密,以防止未经授权访问您的日志数据。

可选变量

  • SERVICE_NAME:此可选变量允许您指定发送日志到POGR平台的服务名称。如果不设置,则容器将尝试使用当前可执行文件名称作为服务名称。指定服务名称有助于在同一个项目或基础设施中识别和过滤来自不同服务的日志。

  • ENVIRONMENT:该ENVIRONMENT变量允许您指定应用程序的部署环境,如开发测试预发布生产。此信息包含在日志中,可以用来区分在不同环境中运行的同一家服务的日志。

  • SERVICE_TYPE:使用此变量,您可以定义生成日志的服务类型,如web数据库缓存等。这种分类有助于根据服务类型组织和过滤日志,为系统不同组件的行为和问题提供更清晰的洞察。

  • POGR_INIT_ENDPOINTPOGR_LOGS_ENDPOINT:这些可选变量允许自定义初始化和日志数据发送到的端点。默认情况下,容器使用POGR平台的标准端点,但您可以使用这些变量覆盖它们,如果需要将请求定向到不同的地址(例如,代理或测试环境)。

安装

pogr_tracing_rs添加到您的Cargo.toml文件

[dependencies]
pogr_tracing_rs = "0.0.35"
tracing = "0.1"
tokio = { version = "1", features = ["full"] }
reqwest = "0.11"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"

用法

基本设置

要在项目中开始使用pogr_tracing_rs,首先设置跟踪订阅者并将PogrLayer添加到您的应用程序。以下是一个基本示例

use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
use pogr_tracing_rs::PogrLayer;
use std::sync::Arc;
use tokio::sync::Mutex;

#[tokio::main]
async fn main() {
    // Initialize the PogrAppender with optional endpoints
    let appender = pogr_tracing_rs::PogrAppender::new(None, None).await;
    let pogr_layer = PogrLayer {
        appender: Arc::new(Mutex::new(appender)),
    };

    // Set up the tracing subscriber
    tracing_subscriber::registry()
        .with(pogr_layer)
        .init();

    // Your application logic here
}

记录事件

要记录事件,请使用tracing宏。PogrLayer自动捕获这些事件并将它们转发到POGR平台

use tracing::{info, warn, error};

fn perform_operation() {
    info!("This is an informational message");
    warn!("This is a warning message");
    error!("This is an error message");
}

自定义记录

您还可以使用结构化数据创建自定义日志事件

use tracing::info;

fn process_data(data: &str) {
    info!(data = data, "Processing data");
}

自定义

您可以通过在创建PogrAppender时提供自定义的init_endpointlogs_endpoint URL来自定义POGR会话初始化。此外,您可能还需要调整LogRequest结构和序列化逻辑以适应您的特定日志要求。

贡献

欢迎对pogr_tracing_rs的贡献。请将您的拉取请求或问题提交到项目仓库。

作者

  • Randolph William Aarseth II

依赖项

约7-20MB
~291K SLoC