1use std::io::Write;
2
3pub fn init_logger() -> env_logger::Builder {
6 let mut builder = env_logger::Builder::from_default_env();
7 builder.target(env_logger::Target::Stdout);
8
9 builder.filter(None, get_log_level());
11 builder.write_style(env_logger::WriteStyle::Always);
12
13 if std::env::var("CI").is_ok() {
15 builder.format(|buf, record| match record.level().as_str() {
16 "DEBUG" => writeln!(buf, "::debug:: {}", record.args()),
17 "WARN" => writeln!(buf, "::warning:: {}", record.args()),
18 "ERROR" => {
19 writeln!(buf, "::error:: {}", record.args())
20 }
21 _ => writeln!(buf, "{}", record.args()),
22 });
23 }
24
25 builder
26}
27
28fn get_log_level() -> log::LevelFilter {
30 match std::env::var("DEBUG") {
32 Ok(_value) => return log::LevelFilter::Debug,
33 Err(_err) => (),
34 }
35 match std::env::var("ACTIONS_RUNNER_DEBUG") {
37 Ok(_value) => return log::LevelFilter::Debug,
38 Err(_err) => (),
39 };
40
41 log::LevelFilter::Info
42}
43
44#[macro_export]
46macro_rules! group {
47 ($($arg:tt)*) => {
49 let title = format!($($arg)*);
50 if std::env::var("CI").is_ok() {
51 println!("::group::{}", title)
52 } else {
53 log!(log::Level::Info, "{}", title)
54 }
55 };
56}
57
58#[macro_export]
59macro_rules! group_info {
60 ($($arg:tt)*) => {
62 let title = format!($($arg)*);
63 if std::env::var("CI").is_ok() {
64 println!("{}", title)
65 } else {
66 log!(log::Level::Info, "{}", title)
67 }
68 };
69}
70
71#[macro_export]
73macro_rules! endgroup {
74 () => {
76 if std::env::var("CI").is_ok() {
77 println!("::endgroup::")
78 }
79 };
80}