本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。

这是尚未发布的文档。 Admission Controller 1.34-dev.

日志记录

您可以让您的策略执行日志记录。 `policy-server`或`kwctl`将这些日志条目转发到包含适当信息的地方。

为Rust SDK选择的日志库是https://github.com/slog-rs/slog[slog]。 这是一个流行且知名的crate,并与SUSE Security Admission Controller无缝集成。

初始化记录器

该项目建议您创建一个全局日志汇聚器,以便在策略中需要时进行日志写入。 为此,请使用`lazy_static` crate:

use slog::{o, Logger};

lazy_static! {
    static ref LOG_DRAIN: Logger = Logger::root(
        logging::KubewardenDrain::new(),
        o!("policy" => "sample-policy")
    );
}

使用记录器

现在,在`validate`或`validate_settings`函数中,您可以使用`slog`导出的宏进行日志记录,这些宏与每个支持的日志记录级别相匹配:

use slog::{info, o, warn, Logger};

fn validate(payload: &[u8]) -> CallResult {
    // ...
    info!(LOG_DRAIN, "starting validation");
    // ...
    warn!(
        LOG_DRAIN, "structured log";
        "some_resource_name" => &some_resource_name
    );
    // ...
}

slog`库将所有日志发送到在全局变量中初始化的日志汇聚器。 这与执行策略的策略评估器同步。 这可以是`kwctl`或`policy-server。 然后,策略评估器记录此信息,添加进一步已知的上下文信息,例如Kubernetes请求`uid`。

有关slog提供的https://docs.rs/slog/2.7.0/slog/macro.log.html[日志宏]的更多信息,请参阅其https://docs.rs/slog/2.7.0/slog/index.html[文档]。