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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
use ;
/// Configure the application log according to env variable, without failing
/// in case of io error.
///
/// If the log file cannot be created, the error is printed to stderr, then
/// the application proceeds without logging.
/// Configure the application log according to env variable.
///
/// If an io error occurs, it is returned, and all logging is disabled
/// (but there won't be any panic or error on log calls).
///
/// The caller can decide to print the error and not, to continue or not.
/// Configure the application log according to env variable, without failing
/// in case of io error.
///
/// If the log file cannot be created, the error is printed to stderr, then
/// the application proceeds without logging.
///
/// Example:
///
/// ```
/// cli_log::init_cli_log!();
/// ```
/// You may specify an altername application name instead
/// of your crate name:
///
/// ```
/// cli_log::init_cli_log!("my-app");
/// ```
///
/// The application name will also be used to derive the
/// env variable name giving the log level, for example
/// `MY_APP_LOG=info` for an application named `my-app`.
///
/// The point of using this macro instead of the init function is to ensure
/// `env!(CARGO_PKG_NAME)` and `env!(CARGO_PKG_VERSION)` are expanded for
/// the outer package, not for cli-log
/// Configure the application log according to env variable.
///
/// If an io error occurs, it is returned, and all logging is disabled
/// (but there won't be any panic or error on log calls).
///
/// The caller can decide to print the error and not, to continue or not.
///
/// Example:
///
/// ```
/// cli_log::try_init_cli_log!().expect("Failed to initialize log");
/// ```
/// You may specify an altername application name instead
/// of your crate name:
///
/// ```
/// if Err(e) = cli_log::try_init_cli_log!("my-app") {
/// eprintln!("Running without log because of error: {}", e);
/// }
/// ```
///
/// The application name will also be used to derive the
/// env variable name giving the log level, for example
/// `MY_APP_LOG=info` for an application named `my-app`.
///
/// The point of using this macro instead of the init function is to ensure
/// `env!(CARGO_PKG_NAME)` and `env!(CARGO_PKG_VERSION)` are expanded for
/// the outer package, not for cli-log