aboutsummaryrefslogtreecommitdiff
path: root/logic
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2026-01-23 17:41:45 +0100
committermetamuffin <metamuffin@disroot.org>2026-01-23 17:41:45 +0100
commit774f64c0789529884dd7a5232f190e347ad29532 (patch)
tree6eb85388837c993a054fba5ca59fdd329f5b5840 /logic
parent3671a4e07565c86f8071fb2309f463aeaf684ba3 (diff)
downloadjellything-774f64c0789529884dd7a5232f190e347ad29532.tar
jellything-774f64c0789529884dd7a5232f190e347ad29532.tar.bz2
jellything-774f64c0789529884dd7a5232f190e347ad29532.tar.zst
move locale code to own crate
Diffstat (limited to 'logic')
-rw-r--r--logic/src/admin/log.rs125
1 files changed, 0 insertions, 125 deletions
diff --git a/logic/src/admin/log.rs b/logic/src/admin/log.rs
deleted file mode 100644
index d266b64..0000000
--- a/logic/src/admin/log.rs
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- This file is part of jellything (https://codeberg.org/metamuffin/jellything)
- which is licensed under the GNU Affero General Public License (version 3); see /COPYING.
- Copyright (C) 2026 metamuffin <metamuffin.org>
-*/
-
-use log::Level;
-use std::{
- collections::VecDeque,
- sync::{Arc, LazyLock, RwLock},
-};
-use tokio::sync::broadcast;
-
-const MAX_LOG_LEN: usize = 4096;
-
-static LOGGER: LazyLock<Log> = LazyLock::new(Log::default);
-
-pub fn enable_logging() {
- log::set_logger(&*LOGGER).unwrap();
- log::set_max_level(log::LevelFilter::Debug);
-}
-
-type LogBuffer = VecDeque<Arc<LogLine>>;
-
-pub struct Log {
- inner: env_logger::Logger,
- stream: (
- broadcast::Sender<Arc<LogLine>>,
- broadcast::Sender<Arc<LogLine>>,
- ),
- log: RwLock<(LogBuffer, LogBuffer)>,
-}
-
-pub fn get_log_buffer(warn: bool) -> VecDeque<Arc<LogLine>> {
- if warn {
- LOGGER.log.read().unwrap().1.clone()
- } else {
- LOGGER.log.read().unwrap().0.clone()
- }
-}
-pub fn get_log_stream(warn: bool) -> broadcast::Receiver<Arc<LogLine>> {
- if warn {
- LOGGER.stream.1.subscribe()
- } else {
- LOGGER.stream.0.subscribe()
- }
-}
-
-impl Default for Log {
- fn default() -> Self {
- Self {
- inner: env_logger::builder()
- .filter_level(log::LevelFilter::Warn)
- .parse_env("LOG")
- .build(),
- stream: (
- tokio::sync::broadcast::channel(1024).0,
- tokio::sync::broadcast::channel(1024).0,
- ),
- log: Default::default(),
- }
- }
-}
-impl Log {
- fn should_log(&self, metadata: &log::Metadata) -> bool {
- let level = metadata.level();
- level
- <= match metadata.target() {
- x if x.starts_with("jelly") => Level::Debug,
- x if x.starts_with("rocket::") => Level::Info,
- _ => Level::Warn,
- }
- }
- fn do_log(&self, record: &log::Record) {
- let time = Utc::now();
- let line = Arc::new(LogLine {
- time,
- module: record.module_path_static(),
- level: match record.level() {
- Level::Error => LogLevel::Error,
- Level::Warn => LogLevel::Warn,
- Level::Info => LogLevel::Info,
- Level::Debug => LogLevel::Debug,
- Level::Trace => LogLevel::Trace,
- },
- message: record.args().to_string(),
- });
- let mut w = self.log.write().unwrap();
- w.0.push_back(line.clone());
- let _ = self.stream.0.send(line.clone());
- while w.0.len() > MAX_LOG_LEN {
- w.0.pop_front();
- }
- if record.level() <= Level::Warn {
- let _ = self.stream.1.send(line.clone());
- w.1.push_back(line);
- while w.1.len() > MAX_LOG_LEN {
- w.1.pop_front();
- }
- }
- }
-}
-
-impl log::Log for Log {
- fn enabled(&self, metadata: &log::Metadata) -> bool {
- self.inner.enabled(metadata) || self.should_log(metadata)
- }
- fn log(&self, record: &log::Record) {
- match (record.module_path_static(), record.line()) {
- // TODO is there a better way to ignore those?
- (Some("rocket::rocket"), Some(670)) => return,
- (Some("rocket::server"), Some(401)) => return,
- _ => {}
- }
- if self.inner.enabled(record.metadata()) {
- self.inner.log(record);
- }
- if self.should_log(record.metadata()) {
- self.do_log(record)
- }
- }
- fn flush(&self) {
- self.inner.flush();
- }
-}