rust库学习-env_logger(actix-web添加彩色日志、rust添加彩色日志 )

这篇具有很好参考价值的文章主要介绍了rust库学习-env_logger(actix-web添加彩色日志、rust添加彩色日志 )。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我们在进行rust的web开发时,如果不指定日志,就不会有输出,非常不友好
这里我们使用env_logger进行日志打印

介绍

env_logger 需要配合 log 库使用,

env_logger 是 Rust 社区中一个非常流行的日志记录库。它提供了一个简单且易于使用的接口,用于配置和记录日志消息。env_logger 可以与 Rust 标准库中的 配合使用log cratelog crate 是 Rust 中的一个日志抽象库,类似于 Java 中的 SLF4J(笔者感觉类似于这样的门面模式,因为我们只需要更换依赖即可修改log的具体实现,达到动态切换日志库的目的)。

log crate 提供了一个通用的日志接口,允许开发者在代码中记录日志消息。它定义了几个日志级别(如 ErrorWarnInfoDebugTrace),以及日志记录方法(如 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.");
}

效果
rust库学习-env_logger(actix-web添加彩色日志、rust添加彩色日志 ),rust,rust,学习,env_logger

crate地址&json格式日志

  • env_logger:https://crates.io/crates/env_logger

  • 还有一些可以打印json格式的日志库,方便将日志发送往ELK中,比如【https://crates.io/crates/json_env_logger2】文章来源地址https://www.toymoban.com/news/detail-667999.html

到了这里,关于rust库学习-env_logger(actix-web添加彩色日志、rust添加彩色日志 )的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Rust #[actix_web::main]

    #[actix_web::main] 是一个 Rust 属性宏(Attribute Macro),用于启动 Actix-Web 框架的运行时。这个宏通常被放在程序的入口函数上,例如: 在这个例子中, #[actix_web::main] 属性宏告诉编译器将这个函数包装成一个可执行文件,并启动 Actix-Web 框架的运行时。这个函数也被称为 “应用程

    2024年02月03日
    浏览(35)
  • Rust Web 全栈开发之 Actix 尝鲜并构建REST API

    actix-web v4.3.1 actix-rt v2.8.0 目录 Cargo.toml webservice/Cargo.toml webservice/src/bin/server1.rs 运行 客户端浏览器 互联网 Actix HTTP Server Actix的并发(concurrency) Actix支持两类并发: 异步I/O:给定的OS原生线程在等待I/O时执行其他任务(例如侦听网络连接) 多线程并行:默认情况下启动OS原生

    2024年02月06日
    浏览(37)
  • 【从零开始的rust web开发之路 一】axum学习使用

    第一章 axum学习使用 本职java开发,兼架构设计。空闲时间学习了rust,目前还不熟练掌握。想着用urst开发个web服务,正好熟悉一下rust语言开发。 目前rust 语言web开发相关的框架已经有很多,但还是和java,go语言比不了。 这个系列想完整走一遍web开发,后续有时间就出orm,还

    2024年02月12日
    浏览(54)
  • 强化学习highway_env代码解读

    作为强化学习的新手,写这个系列的博客主要是为了记录学习过程,同时也与大家分享自己的所见所想。前段时间发布了人生第一篇博客,是关于highway_env的自定义环境。但博客主要是关于如何创建一个自己的环境的py文件,是基于十字路口环境创建的。在经过一段时间的摸索

    2024年02月07日
    浏览(42)
  • 微信小程序(web)和django(后端) 异常报错:405 (Method Not Allowed)(env: Windows,mp,1.06.2206020; lib: 2.19.4)

    项目解析: 利用django框架创建一个api接口让小程序可以访问   微信小程序报错 :   GET http://127.0.0.1:8003/api/login/?phone=%E4%BA%8C%E5%A4%A7%E7%88%B7code=%E8%AF%B7%E6%8B%A8%E6%89%93110 405 (Method Not Allowed)(env: Windows,mp,1.06.2206020; lib: 2.19.4) django 报错:\\\"GET /api/login/?phone=YYQQcode=11Q HTTP/1.1\\\" 405 40 Meth

    2024年02月03日
    浏览(37)
  • Rust UI开发(四):iced中如何添加菜单栏(串口调试助手)

    注:此文适合于对rust有一些了解的朋友 iced是一个跨平台的GUI库,用于为rust语言程序构建UI界面。 这是一个系列博文,本文是第四篇,前三篇链接: 1、Rust UI开发(一):使用iced构建UI时,如何在界面显示中文字符 2、Rust UI开发(二):iced中如何为窗口添加icon图标 3、Rust

    2024年02月03日
    浏览(93)
  • Rust UI开发(二):iced中如何为窗口添加icon图标

    注:此文适合于对rust有一些了解的朋友 iced是一个跨平台的GUI库,用于为rust语言程序构建UI界面。 想要了解如何构建简单窗口的可以看本系列的第一篇: Rust UI开发:使用iced构建UI时,如何在界面显示中文字符 本篇是系列第二篇,主要解决一个问题,就是为窗口添加图标ic

    2024年02月04日
    浏览(62)
  • Rust Web小项目

    监听TCP链接 获取请求数据 响应Http请求 返回一个http数据 hello.html如上所示 访问其他路径报故障 404.html 代码重构 多线程 最简单的 这样来一个请求就会创建一个线程 但是如果被攻击,就会一直创建很多线程 加入线程池 main.rs lib.rs 优雅地停机 这只是一个简单的小工程,目的是

    2024年01月24日
    浏览(40)
  • 【小沐学Web】Rust实现Web服务器

    https://www.rust-lang.org/ Rust: 一种使每个人都能够构建可靠且高效的软件的语言。 如今,全球有数百家公司在生产环境中使用 Rust,以提供快速、资源少、跨平台的解决方案。您熟悉和喜爱的软件,例如Firefox、 Dropbox和Cloudflare,都使用 Rust。从初创公司到大公司,从嵌入式设备到

    2024年02月07日
    浏览(60)
  • Web和云开发,Rust会起飞?

    Web和云开发,Rust会起飞? 一、前言 二、大厂偏爱,Rust的未来 三、Rust做Web的雄心 四、有必要换Rust做Web? 1.效率和性能 2.可靠性和可维护性 五、Rust先苦后甜 六、用Rust前的几个问题 七、开发界的强者 去年,Web开发公司Mainmatter对Web版 Rust 进行了战略押注,并发起了 EuroRust

    2024年02月12日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包