#clap #env-logger #log

clap_logger

clap的env_logger集成

4个版本

0.3.3 2022年8月30日
0.3.2 2022年8月30日
0.3.1 2022年4月15日
0.3.0 2022年4月15日

#21 in #env-logger

AGPL-3.0

19KB
187

clap_logger


lib.rs:

Clap Logger

为[clap][clap]提供简单的[env_logger][env_logger]集成。

此库提供了一个简单的方法,允许用户通过命令行参数设置日志级别。它在clap中直接实现,因此感觉非常自然。

请注意,此crate不支持clap_derive,并且在近期或将来可能永远不会支持它,因为与它的集成非常困难。

特性

  • 命令行参数设置日志级别
  • 参数可以修改
  • 可选:通过环境变量设置日志级别
  • 直接嵌入到clap::Commandclap::ArgMatches

状态:Beta

完成

  • 特性完整(但欢迎建议)
  • 无panic

待办事项

  • 等待反馈
  • 更多测试
  • 完整的文档
  • 更多示例

待办事项列表

  • 确定是否可能支持clap_derive

添加参数

基本实现

use clap::Command;
use log::LevelFilter;
use clap_logger::{ClapInitLogger, ClapLoglevelArg};

// Generate a clap command
let m: clap::ArgMatches = Command::new("clap_command_test")
  // add loglevel argument
   	.add_loglevel_arg(LevelFilter::Info)
	.get_matches();

日志级别参数操作

您也可以直接获取Arg以在添加之前修改它:

use clap::{arg, Arg, Command};
use log::LevelFilter;
use clap_logger::{ClapInitLogger, get_loglevel_arg};

// Generate a clap command
let m: clap::ArgMatches = Command::new("clap_command_test")
  // add the add loglevel argument
 	.arg(get_loglevel_arg(LevelFilter::Info)
		// Adding a short version
		.short('l')
    // changing the long version of the argument just because I can
		.long("custom-loglevel")
		.default_value("INFO")
  )
	.get_matches();

警告:请勿触摸参数的.possible_values.id字段或修改输入的任何内容。

初始化记录器

基本实现

use clap::Command;
use log::LevelFilter;
use clap_logger::{ClapInitLogger, ClapLoglevelArg};

let m: clap::ArgMatches = Command::new("clap_command_test")
  // add the loglevel argument
 	.add_loglevel_arg(LevelFilter::Info)
	.get_matches();

m.init_logger().expect("Failed to initialize logger");

依赖项

~4–14MB
~138K SLoC