1#[allow(unused_imports)]
7pub use log::{Level, LevelFilter};
8pub use workflow_log;
9
10cfg_if::cfg_if! {
11 if #[cfg(not(target_arch = "wasm32"))] {
12 use consts::*;
13
14 mod appender;
15 mod consts;
16 mod logger;
17 }
18}
19
20pub fn set_log_level(level: LevelFilter) {
21 workflow_log::set_log_level(level);
22}
23
24#[cfg(not(target_arch = "wasm32"))]
25pub fn init_logger(log_dir: Option<&str>, filters: &str) {
26 use crate::log::appender::AppenderSpec;
27 use log4rs::{config::Root, Config};
28 use std::iter::once;
29
30 const CONSOLE_APPENDER: &str = "stdout";
31 const LOG_FILE_APPENDER: &str = "log_file";
32 const ERR_LOG_FILE_APPENDER: &str = "err_log_file";
33
34 let level = LevelFilter::Info;
35 let loggers = logger::Builder::new().root_level(level).parse_env(DEFAULT_LOGGER_ENV).parse_expression(filters).build();
36
37 let mut stdout_appender = AppenderSpec::console(CONSOLE_APPENDER, None);
38 let mut file_appender = log_dir.map(|x| AppenderSpec::roller(LOG_FILE_APPENDER, None, x, LOG_FILE_NAME));
39 let mut err_file_appender =
40 log_dir.map(|x| AppenderSpec::roller(ERR_LOG_FILE_APPENDER, Some(LevelFilter::Warn), x, ERR_LOG_FILE_NAME));
41 let appenders = once(&mut stdout_appender).chain(&mut file_appender).chain(&mut err_file_appender).map(|x| x.appender());
42
43 let config = Config::builder()
44 .appenders(appenders)
45 .loggers(loggers.items())
46 .build(
47 Root::builder()
48 .appenders(once(&stdout_appender).chain(&file_appender).chain(&err_file_appender).map(|x| x.name))
49 .build(loggers.root_level()),
50 )
51 .unwrap();
52
53 let _handle = log4rs::init_config(config).unwrap();
54
55 set_log_level(level);
56}
57
58#[cfg(not(target_arch = "wasm32"))]
61pub fn try_init_logger(filters: &str) {
62 use crate::log::appender::AppenderSpec;
63 use log4rs::{config::Root, Config};
64
65 const CONSOLE_APPENDER: &str = "stdout";
66
67 let loggers = logger::Builder::new().root_level(LevelFilter::Info).parse_env(DEFAULT_LOGGER_ENV).parse_expression(filters).build();
68 let mut stdout_appender = AppenderSpec::console(CONSOLE_APPENDER, None);
69 let config = Config::builder()
70 .appender(stdout_appender.appender())
71 .loggers(loggers.items())
72 .build(Root::builder().appender(CONSOLE_APPENDER).build(loggers.root_level()))
73 .unwrap();
74 let _ = log4rs::init_config(config);
75}
76
77#[cfg(target_arch = "wasm32")]
78#[macro_export]
79macro_rules! trace {
80 ($($t:tt)*) => {
81 if kaspa_core::log::workflow_log::log_level_enabled(log::Level::Trace) {
82 kaspa_core::log::workflow_log::impls::trace_impl(None, &format_args!($($t)*));
83 }
84 };
85}
86
87#[cfg(not(target_arch = "wasm32"))]
88#[macro_export]
89macro_rules! trace {
90 ($($t:tt)*) => {
91 log::trace!($($t)*);
92 };
93}
94
95#[cfg(target_arch = "wasm32")]
96#[macro_export]
97macro_rules! debug {
98 ($($t:tt)*) => (
99 if kaspa_core::log::workflow_log::log_level_enabled(log::Level::Debug) {
100 kaspa_core::log::workflow_log::impls::debug_impl(None, &format_args!($($t)*));
101 }
102 )
103}
104
105#[cfg(not(target_arch = "wasm32"))]
106#[macro_export]
107macro_rules! debug {
108 ($($t:tt)*) => (
109 log::debug!($($t)*);
110 )
111}
112
113#[cfg(target_arch = "wasm32")]
114#[macro_export]
115macro_rules! info {
116 ($($t:tt)*) => (
117 if kaspa_core::log::workflow_log::log_level_enabled(log::Level::Info) {
118 kaspa_core::log::workflow_log::impls::info_impl(None, &format_args!($($t)*));
119 }
120 )
121}
122
123#[cfg(not(target_arch = "wasm32"))]
124#[macro_export]
125macro_rules! info {
126 ($($t:tt)*) => (
127 log::info!($($t)*);
128 )
129}
130
131#[cfg(target_arch = "wasm32")]
132#[macro_export]
133macro_rules! warn {
134 ($($t:tt)*) => (
135 if kaspa_core::log::workflow_log::log_level_enabled(log::Level::Warn) {
136 kaspa_core::log::workflow_log::impls::warn_impl(None, &format_args!($($t)*));
137 }
138 )
139}
140
141#[cfg(not(target_arch = "wasm32"))]
142#[macro_export]
143macro_rules! warn {
144 ($($t:tt)*) => (
145 log::warn!($($t)*);
146 )
147}
148
149#[cfg(target_arch = "wasm32")]
150#[macro_export]
151macro_rules! error {
152 ($($t:tt)*) => (
153 if kaspa_core::log::workflow_log::log_level_enabled(log::Level::Error) {
154 kaspa_core::log::workflow_log::impls::error_impl(None, &format_args!($($t)*));
155 }
156 )
157}
158
159#[cfg(not(target_arch = "wasm32"))]
160#[macro_export]
161macro_rules! error {
162 ($($t:tt)*) => (
163 log::error!($($t)*);
164 )
165}