mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-03 08:57:54 +00:00
74 lines
2.3 KiB
Rust
74 lines
2.3 KiB
Rust
//! logging
|
|
//!
|
|
//! The purpose of this crate is to pin against a single version of the 'log' crate, making it
|
|
//! easier to simultaneously update across apps. We can also pack in a few useful definitions.
|
|
//!
|
|
|
|
// Never allow these
|
|
#![forbid(private_bounds)]
|
|
#![forbid(private_interfaces)]
|
|
#![forbid(unused_must_use)] // NB: It's unsafe to not close/check some things
|
|
|
|
// Okay to toggle
|
|
#![forbid(unreachable_patterns)]
|
|
#![forbid(unused_imports)]
|
|
#![forbid(unused_mut)]
|
|
#![forbid(unused_variables)]
|
|
|
|
// Always allow
|
|
#![allow(dead_code)]
|
|
#![allow(non_snake_case)]
|
|
|
|
use std::env;
|
|
|
|
/// Re-export.
|
|
pub use log::debug;
|
|
pub use log::error;
|
|
pub use log::info;
|
|
pub use log::log;
|
|
pub use log::trace;
|
|
pub use log::warn;
|
|
|
|
/// Name of the environment variable Rust's env logger uses
|
|
pub const ENV_RUST_LOG : &str = "RUST_LOG";
|
|
|
|
/// The default logging level
|
|
pub const DEFAULT_LOG_LEVEL: &str = "info";
|
|
|
|
/// A useful logging level
|
|
/// NB: `sqlx::query` is spammy and dumps all queries as "info"-level log lines.
|
|
/// NB: `hyper::proto::h1::io` is incredibly spammy and logs every chunk of bytes in very large files being downloaded.
|
|
pub const TYPICAL_LOG_LEVEL : &str = concat!(
|
|
"debug,",
|
|
"actix_web=info,",
|
|
"sqlx::query=warn,",
|
|
"hyper::proto::h1::io=warn,",
|
|
"storyteller_web::threads::db_health_checker_thread::db_health_checker_thread=warn,",
|
|
"http_server_common::request::get_request_ip=info," // Debug spams Rust logs
|
|
);
|
|
|
|
/// Initialize Rust's env logger.
|
|
///
|
|
/// The Rust logger reads the desired log level from the `RUST_LOG` environment variable. If this
|
|
/// isn't set, the provided default is used. If a default fallback isn't provided to this function,
|
|
/// we fall back to `"info"`.
|
|
///
|
|
/// A more robust logging config might configure on a per-component basis, eg.
|
|
/// `"tokio_reactor=warn,hyper=info,debug"`. You can read more in the `log` and `env_logger` crate
|
|
/// docs.
|
|
pub fn init_env_logger(default_if_absent: Option<&str>) {
|
|
if env::var(ENV_RUST_LOG)
|
|
.as_ref()
|
|
.ok()
|
|
.is_none()
|
|
{
|
|
let default_log_level = default_if_absent.unwrap_or(DEFAULT_LOG_LEVEL);
|
|
println!("Setting default logging level to \"{}\", override with env var {}.",
|
|
default_log_level, ENV_RUST_LOG);
|
|
env::set_var(ENV_RUST_LOG, default_log_level);
|
|
}
|
|
|
|
env_logger::init();
|
|
}
|
|
|