summaryrefslogtreecommitdiff
path: root/rola-utils/functions/src/log_macros.rs
diff options
context:
space:
mode:
Diffstat (limited to 'rola-utils/functions/src/log_macros.rs')
-rw-r--r--rola-utils/functions/src/log_macros.rs53
1 files changed, 53 insertions, 0 deletions
diff --git a/rola-utils/functions/src/log_macros.rs b/rola-utils/functions/src/log_macros.rs
new file mode 100644
index 0000000..4ee4e68
--- /dev/null
+++ b/rola-utils/functions/src/log_macros.rs
@@ -0,0 +1,53 @@
+//! Custom logging macros, with the same names as `log` crate's `trace!`, `debug!`, `info!`, `warn!`, `error!`,
+//! but different behavior: automatically prepend `file!()` information to the message.
+//!
+//! # Usage
+//! ```ignore
+//! trace!("value = {}", x);
+//! debug!("something happened");
+//! info!("user {} logged in", username);
+//! warn!("disk space low: {} GB", free);
+//! error!("failed to open file: {}", path);
+//! ```
+//!
+//! Expands to:
+//! ```ignore
+//! ::log::trace!("[{}]: {}", file!(), format!("value = {}", x));
+//! ::log::debug!("[{}]: {}", file!(), format!("something happened"));
+//! ...
+//! ```
+
+#[macro_export]
+macro_rules! trace {
+ ($($arg:tt)*) => {
+ ::log::trace!("[{}]: {}", file!(), format!($($arg)*));
+ };
+}
+
+#[macro_export]
+macro_rules! debug {
+ ($($arg:tt)*) => {
+ ::log::debug!("[{}]: {}", file!(), format!($($arg)*));
+ };
+}
+
+#[macro_export]
+macro_rules! info {
+ ($($arg:tt)*) => {
+ ::log::info!("[{}]: {}", file!(), format!($($arg)*));
+ };
+}
+
+#[macro_export]
+macro_rules! warn {
+ ($($arg:tt)*) => {
+ ::log::warn!("[{}]: {}", file!(), format!($($arg)*));
+ };
+}
+
+#[macro_export]
+macro_rules! error {
+ ($($arg:tt)*) => {
+ ::log::error!("[{}]: {}", file!(), format!($($arg)*));
+ };
+}