|
| 1 | +extern crate env_logger; |
| 2 | +extern crate log; |
| 3 | +use env_logger::fmt::{Color, Style, StyledValue}; |
| 4 | +use log::Level; |
| 5 | + |
1 | 6 | extern crate failure;
|
2 | 7 | extern crate reqwest;
|
3 | 8 | extern crate structopt;
|
@@ -70,6 +75,8 @@ enum Cli {
|
70 | 75 | }
|
71 | 76 |
|
72 | 77 | fn main() -> Result<(), failure::Error> {
|
| 78 | + set_env_logger(); |
| 79 | + |
73 | 80 | let cli = Cli::from_args();
|
74 | 81 | match cli {
|
75 | 82 | Cli::IntrospectSchema {
|
@@ -100,3 +107,38 @@ fn main() -> Result<(), failure::Error> {
|
100 | 107 | ),
|
101 | 108 | }
|
102 | 109 | }
|
| 110 | + |
| 111 | +fn set_env_logger() { |
| 112 | + use std::io::Write; |
| 113 | + |
| 114 | + env_logger::Builder::from_default_env() |
| 115 | + .format(|f, record| { |
| 116 | + let mut style = f.style(); |
| 117 | + let level = colored_level(&mut style, record.level()); |
| 118 | + let mut style = f.style(); |
| 119 | + let file = style.set_bold(true).value("file"); |
| 120 | + let mut style = f.style(); |
| 121 | + let module = style.set_bold(true).value("module"); |
| 122 | + writeln!( |
| 123 | + f, |
| 124 | + "{} {}: {} {}: {}\n{}", |
| 125 | + level, |
| 126 | + file, |
| 127 | + record.file().unwrap(), |
| 128 | + module, |
| 129 | + record.target(), |
| 130 | + record.args() |
| 131 | + ) |
| 132 | + }) |
| 133 | + .init(); |
| 134 | +} |
| 135 | + |
| 136 | +fn colored_level<'a>(style: &'a mut Style, level: Level) -> StyledValue<'a, &'static str> { |
| 137 | + match level { |
| 138 | + Level::Trace => style.set_color(Color::Magenta).value("TRACE"), |
| 139 | + Level::Debug => style.set_color(Color::Blue).value("DEBUG"), |
| 140 | + Level::Info => style.set_color(Color::Green).value("INFO "), |
| 141 | + Level::Warn => style.set_color(Color::Yellow).value("WARN "), |
| 142 | + Level::Error => style.set_color(Color::Red).value("ERROR"), |
| 143 | + } |
| 144 | +} |
0 commit comments