diff options
author | Paweł Palenica <pawelpalenica11@gmail.com> | 2021-07-13 23:22:11 -0700 |
---|---|---|
committer | Paweł Palenica <pawelpalenica11@gmail.com> | 2021-07-13 23:29:04 -0700 |
commit | b15cfba6e1c6227395a4f8cd2a625bd75659092e (patch) | |
tree | 1175c031bd191ae0216e7f75bdc2238fb7c81f6a /zellij-utils | |
parent | a38c176646fcbe8f10d71c32e955674ffd7b669d (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.yml | 46 | ||||
-rw-r--r-- | zellij-utils/src/logging.rs | 50 |
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"); } |