use casbin::{Logger, prelude::*};
use myotel::tracing::*;
#[derive(Default)]
pub struct TraceLogger {
enabled: bool,
}
impl Logger for TraceLogger {
#[inline]
fn enable_log(&mut self, enabled: bool) {
self.enabled = enabled;
}
#[inline]
fn is_enabled(&self) -> bool {
self.enabled
}
fn print_enforce_log(&self, rvals: Vec<String>, authorized: bool, cached: bool) {
if !self.is_enabled() {
return;
}
info!(
Request = rvals.join(","),
"Cached" = cached,
Response = authorized,
"Enforce Request"
);
}
fn print_mgmt_log(&self, e: &EventData) {
if !self.is_enabled() {
return;
}
info!(Event = e.to_string(), "Policy Management");
}
fn print_explain_log(&self, rules: Vec<String>) {
if !self.is_enabled() {
return;
}
info!(Explain = rules.join(","), "Hitted Policies");
}
fn print_status_log(&self, enabled: bool) {
if !self.is_enabled() {
return;
}
info!(Enabled = enabled, "Status");
}
}