1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
/*!
Logging with function names.

## Example

```rust
use fnlog::{fn_debug, fn_error, fn_info, fn_trace, fn_warn};

fn hello() {
    fn_trace!("trace in hello");
    fn_debug!("debug in hello");
    fn_info!("info in hello");
    fn_warn!("warn in hello");
    fn_error!("error in hello");
}

fn main() {
    env_logger::init();
    fn_trace!("trace in main");
    fn_debug!("debug in main");
    fn_info!("info in main");
    fn_warn!("warn in main");
    fn_error!("error in main");
    hello();
}
```

Assumes the binary is `main`:

```
$ RUST_LOG=trace ./main
[2020-11-23T21:13:44Z TRACE main] [main::main] trace in main
[2020-11-23T21:13:44Z DEBUG main] [main::main] debug in main
[2020-11-23T21:13:44Z INFO  main] [main::main] info in main
[2020-11-23T21:13:44Z WARN  main] [main::main] warn in main
[2020-11-23T21:13:44Z ERROR main] [main::main] error in main
[2020-11-23T21:13:44Z TRACE main] [main::hello] trace in hello
[2020-11-23T21:13:44Z DEBUG main] [main::hello] debug in hello
[2020-11-23T21:13:44Z INFO  main] [main::hello] info in hello
[2020-11-23T21:13:44Z WARN  main] [main::hello] warn in hello
[2020-11-23T21:13:44Z ERROR main] [main::hello] error in hello
```
*/

#[macro_export]
macro_rules! fn_trace {
    ($x:expr $(, $($y:expr),+)?) => {
        log::trace!(concat!("[{}] ", $x), stdext::function_name!() $(, $($y),+)?);
    };
}

#[macro_export]
macro_rules! fn_debug {
    ($x:expr $(, $($y:expr),+)?) => {
        log::debug!(concat!("[{}] ", $x), stdext::function_name!() $(, $($y),+)?);
    };
}

#[macro_export]
macro_rules! fn_info {
    ($x:expr $(, $($y:expr),+)?) => {
        log::info!(concat!("[{}] ", $x), stdext::function_name!() $(, $($y),+)?);
    };
}

#[macro_export]
macro_rules! fn_warn {
    ($x:expr $(, $($y:expr),+)?) => {
        log::warn!(concat!("[{}] ", $x), stdext::function_name!() $(, $($y),+)?);
    };
}

#[macro_export]
macro_rules! fn_error {
    ($x:expr $(, $($y:expr),+)?) => {
        log::error!(concat!("[{}] ", $x), stdext::function_name!() $(, $($y),+)?);
    };
}