在线制作书封网站,网站建设先进个人代表发言,公司管理系统的好处,工程行业网站文章目录 介绍actix-web启用彩色日志crate地址json格式日志 我们在进行rust的web开发时#xff0c;如果不指定日志#xff0c;就不会有输出#xff0c;非常不友好 这里我们使用env_logger进行日志打印
介绍
env_logger 需要配合 log 库使用,
env_logger 是 Rust 社区… 文章目录 介绍actix-web启用彩色日志crate地址json格式日志 我们在进行rust的web开发时如果不指定日志就不会有输出非常不友好 这里我们使用env_logger进行日志打印
介绍
env_logger 需要配合 log 库使用,
env_logger 是 Rust 社区中一个非常流行的日志记录库。它提供了一个简单且易于使用的接口用于配置和记录日志消息。env_logger 可以与 Rust 标准库中的 配合使用log cratelog crate 是 Rust 中的一个日志抽象库类似于 Java 中的 SLF4J笔者感觉类似于这样的门面模式因为我们只需要更换依赖即可修改log的具体实现达到动态切换日志库的目的。
log crate 提供了一个通用的日志接口允许开发者在代码中记录日志消息。它定义了几个日志级别如 Error、Warn、Info、Debug、Trace以及日志记录方法如 error!、warn!、info!、debug!、trace!。log crate 的接口非常简单允许开发者在代码中使用类似这样的宏log::info!记录日志。
而 env_logger 则是一个基于 log crate 的实现它提供了一个具体的日志记录器并通过环境变量来配置日志的输出级别和格式。你可以在代码中使用 log crate 的宏记录日志然后通过使用 env_logger 来配置日志级别和格式并将日志输出到控制台或文件中。
env_logger 还支持动态切换日志库。你可以在项目的依赖中同时包括 env_logger 和其他的日志库然后通过设置环境变量来选择要使用的日志库。这样你可以根据不同的需求和环境灵活地切换日志库而无需修改代码。
actix-web启用彩色日志
废话不多说直接给各位爷上代码
toml
[dependencies]
log 0.4.0
env_logger 0.9.0代码
use chrono::Local;
use std::io::Write;
use std::{env, io};
use std::sync::Mutex;
use std::time::Duration;
use log::info;use actix_web::{App, HttpServer, middleware, web};#[actix_rt::main]
async fn main() - io::Result() {// 初始化日志init_logger();let app move || {App::new()// 设置中间件让actix-web打印日志.wrap(middleware::Logger::default())};HttpServer::new(app).bind(127.0.0.1:3000)?.run().await
}fn init_logger() {use env_logger::fmt::Color;use env_logger::Env;use log::LevelFilter;let env Env::default().filter_or(MY_LOG_LEVEL, debug);// 设置日志打印格式env_logger::Builder::from_env(env).format(|buf, record| {let level_color match record.level() {log::Level::Error Color::Red,log::Level::Warn Color::Yellow,log::Level::Info Color::Green,log::Level::Debug | log::Level::Trace Color::Cyan,};let mut level_style buf.style();level_style.set_color(level_color).set_bold(true);let mut style buf.style();style.set_color(Color::White).set_dimmed(true);writeln!(buf,{} {} [ {} ] {},Local::now().format(%Y-%m-%d %H:%M:%S),level_style.value(record.level()),style.value(record.module_path().unwrap_or(unnamed)),record.args())}).filter(None, LevelFilter::Debug).init();info!(env_logger initialized.);
}效果
crate地址json格式日志 env_loggerhttps://crates.io/crates/env_logger 还有一些可以打印json格式的日志库方便将日志发送往ELK中比如【https://crates.io/crates/json_env_logger2】