From 75ffea3fe688ed8b010467ec726522af6391c102 Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Fri, 9 Jun 2023 16:54:00 +0300 Subject: feat(corp/rih/backend): sprinkle some logging all over the place Change-Id: Ifd55a0bf75070b1d47c2d65c32960f05ad7040a0 Reviewed-on: https://cl.tvl.fyi/c/depot/+/8736 Tested-by: BuildkiteCI Reviewed-by: tazjin --- corp/rih/backend/src/yandex_log.rs | 47 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 corp/rih/backend/src/yandex_log.rs (limited to 'corp/rih/backend/src/yandex_log.rs') diff --git a/corp/rih/backend/src/yandex_log.rs b/corp/rih/backend/src/yandex_log.rs new file mode 100644 index 000000000000..64bb4ff97dc5 --- /dev/null +++ b/corp/rih/backend/src/yandex_log.rs @@ -0,0 +1,47 @@ +//! Implements a `log::Log` logger that adheres to the structure +//! expected by Yandex Cloud Serverless logs. +//! +//! https://cloud.yandex.ru/docs/serverless-containers/concepts/logs + +use log::{Level, Log}; +use serde_json::json; + +pub struct YandexCloudLogger; + +pub const YANDEX_CLOUD_LOGGER: YandexCloudLogger = YandexCloudLogger; + +fn level_map(level: &Level) -> &'static str { + match level { + Level::Error => "ERROR", + Level::Warn => "WARN", + Level::Info => "INFO", + Level::Debug => "DEBUG", + Level::Trace => "TRACE", + } +} + +impl Log for YandexCloudLogger { + fn enabled(&self, _: &log::Metadata<'_>) -> bool { + true + } + + fn log(&self, record: &log::Record<'_>) { + if !self.enabled(record.metadata()) { + return; + } + + eprintln!( + "{}", + json!({ + "level": level_map(&record.level()), + "message": record.args().to_string(), + "target": record.target(), + "module": record.module_path(), + "file": record.file(), + "line": record.line(), + }) + ); + } + + fn flush(&self) {} +} -- cgit 1.4.1