summaryrefslogtreecommitdiffstats
path: root/zellij-utils
diff options
context:
space:
mode:
authorPaweł Palenica <pawelpalenica11@gmail.com>2021-07-13 23:22:11 -0700
committerPaweł Palenica <pawelpalenica11@gmail.com>2021-07-13 23:29:04 -0700
commitb15cfba6e1c6227395a4f8cd2a625bd75659092e (patch)
tree1175c031bd191ae0216e7f75bdc2238fb7c81f6a /zellij-utils
parenta38c176646fcbe8f10d71c32e955674ffd7b669d (diff)
Apply code review suggestions. Rename decorating_pipe to logging_pipe. Add plugin_id to plugin log. Move logger init from file to in-code initialization and change logging file to zellij directory. Change format of timestamp.
Diffstat (limited to 'zellij-utils')
-rw-r--r--zellij-utils/assets/config/log4rs.yml46
-rw-r--r--zellij-utils/src/logging.rs50
2 files changed, 48 insertions, 48 deletions
diff --git a/zellij-utils/assets/config/log4rs.yml b/zellij-utils/assets/config/log4rs.yml
deleted file mode 100644
index 5a60b973d..000000000
--- a/zellij-utils/assets/config/log4rs.yml
+++ /dev/null
@@ -1,46 +0,0 @@
-# Scan this file for changes every 30 seconds
-refresh_rate: 30 seconds
-
-appenders:
- # An appender named "stderr" that writes to stderr
- stderr:
- kind: console
- target: stderr
-
- # default zellij appender, should be used across most of the codebase.
- logFile:
- kind: file
- path: "zellij.log"
- append: false
- encoder:
- # {n} means platform dependent newline
- # module is padded to *at least* 25 bytes and thread is padded to be between 10 and 15 bytes.
- pattern: "|{module:<25}| {date} {highlight({level})} [{thread:<10.15}] [{file}:{line}]: {message} {n}"
-
- # plugin appender. To be used in decorating_pipe to forward stderr output from plugins.
- logPlugin:
- kind: file
- path: "zellij.log"
- encoder:
- # {n} means platform dependent newline
- pattern: "{message} {n}"
-
-# Set the default logging level to "info" and log it to zellij.log file
-root:
- level: info
- appenders:
- - logFile
-
-loggers:
- # decrease verbosity for this module because it has a lot of useless info logs
- wasmer_compiler_cranelift:
- level: warn
- appenders:
- - logFile
-
- # For decorating_pipe, we use custom format as we use logging macros to forward stderr output from plugins
- zellij_server::decorating_pipe:
- level: trace
- appenders:
- - logPlugin
- additive: false
diff --git a/zellij-utils/src/logging.rs b/zellij-utils/src/logging.rs
index 52e91497f..d7f35344d 100644
--- a/zellij-utils/src/logging.rs
+++ b/zellij-utils/src/logging.rs
@@ -7,13 +7,59 @@ use std::{
path::{Path, PathBuf},
};
-use log::info;
+use log::{info, LevelFilter};
+
+use log4rs::append::file::FileAppender;
+use log4rs::config::{Appender, Config, Logger, Root};
+use log4rs::encode::pattern::PatternEncoder;
use crate::consts::{ZELLIJ_TMP_LOG_DIR, ZELLIJ_TMP_LOG_FILE};
use crate::shared::set_permissions;
pub fn configure_logger() {
- log4rs::init_file("zellij-utils/assets/config/log4rs.yml", Default::default()).unwrap();
+ // {n} means platform dependent newline
+ // module is padded to exactly 25 bytes and thread is padded to be between 10 and 15 bytes.
+ let file_pattern = "{highlight({level:<6})} |{module:<25.25}| {date(%Y-%m-%d %H:%M:%S.%3f)} [{thread:<10.15}] [{file}:{line}]: {message} {n}";
+
+ // default zellij appender, should be used across most of the codebase.
+ let log_file = FileAppender::builder()
+ .encoder(Box::new(PatternEncoder::new(file_pattern)))
+ .append(true)
+ .build(ZELLIJ_TMP_LOG_DIR.join("zellij.log"))
+ .unwrap();
+
+ // plugin appender. To be used in loggin_pipe to forward stderr output from plugins. We do some formatting
+ // in logging_pipe to print plugin name as 'module' and plugin_id instead of thread.
+ let log_plugin = FileAppender::builder()
+ .encoder(Box::new(PatternEncoder::new(
+ "{highlight({level:<6})} {message} {n}",
+ )))
+ .append(true)
+ .build(ZELLIJ_TMP_LOG_DIR.join("zellij.log"))
+ .unwrap();
+
+ // Set the default logging level to "info" and log it to zellij.log file
+ // Decrease verbosity for `wasmer_compiler_cranelift` module because it has a lot of useless info logs
+ // For `zellij_server::logging_pipe`, we use custom format as we use logging macros to forward stderr output from plugins
+ let config = Config::builder()
+ .appender(Appender::builder().build("logFile", Box::new(log_file)))
+ .appender(Appender::builder().build("logPlugin", Box::new(log_plugin)))
+ .logger(
+ Logger::builder()
+ .appender("logFile")
+ .build("wasmer_compiler_cranelift", LevelFilter::Warn),
+ )
+ .logger(
+ Logger::builder()
+ .appender("logPlugin")
+ .additive(false)
+ .build("zellij_server::logging_pipe", LevelFilter::Trace),
+ )
+ .build(Root::builder().appender("logFile").build(LevelFilter::Info))
+ .unwrap();
+
+ let _ = log4rs::init_config(config).unwrap();
+
info!("Zellij logger initialized");
}