@@ -71,18 +71,6 @@ mod inner;
71
71
#[ path = "string.rs" ]
72
72
mod inner;
73
73
74
- /// A log filter.
75
- ///
76
- /// This struct can be used to determine whether or not a log record
77
- /// should be written to the output.
78
- /// Use the [`Builder`] type to parse and construct a `Filter`.
79
- ///
80
- /// [`Builder`]: struct.Builder.html
81
- pub struct Filter {
82
- directives : Vec < Directive > ,
83
- filter : Option < inner:: Filter > ,
84
- }
85
-
86
74
/// A builder for a log filter.
87
75
///
88
76
/// It can be used to parse a set of directives from a string before building
@@ -112,61 +100,6 @@ pub struct Builder {
112
100
built : bool ,
113
101
}
114
102
115
- #[ derive( Debug ) ]
116
- struct Directive {
117
- name : Option < String > ,
118
- level : LevelFilter ,
119
- }
120
-
121
- impl Filter {
122
- /// Returns the maximum `LevelFilter` that this filter instance is
123
- /// configured to output.
124
- ///
125
- /// # Example
126
- ///
127
- /// ```rust
128
- /// use log::LevelFilter;
129
- /// use env_logger::filter::Builder;
130
- ///
131
- /// let mut builder = Builder::new();
132
- /// builder.filter(Some("module1"), LevelFilter::Info);
133
- /// builder.filter(Some("module2"), LevelFilter::Error);
134
- ///
135
- /// let filter = builder.build();
136
- /// assert_eq!(filter.filter(), LevelFilter::Info);
137
- /// ```
138
- pub fn filter ( & self ) -> LevelFilter {
139
- self . directives
140
- . iter ( )
141
- . map ( |d| d. level )
142
- . max ( )
143
- . unwrap_or ( LevelFilter :: Off )
144
- }
145
-
146
- /// Checks if this record matches the configured filter.
147
- pub fn matches ( & self , record : & Record ) -> bool {
148
- if !self . enabled ( record. metadata ( ) ) {
149
- return false ;
150
- }
151
-
152
- if let Some ( filter) = self . filter . as_ref ( ) {
153
- if !filter. is_match ( & record. args ( ) . to_string ( ) ) {
154
- return false ;
155
- }
156
- }
157
-
158
- true
159
- }
160
-
161
- /// Determines if a log message with the specified metadata would be logged.
162
- pub fn enabled ( & self , metadata : & Metadata ) -> bool {
163
- let level = metadata. level ( ) ;
164
- let target = metadata. target ( ) ;
165
-
166
- enabled ( & self . directives , level, target)
167
- }
168
- }
169
-
170
103
impl Builder {
171
104
/// Initializes the filter builder with defaults.
172
105
pub fn new ( ) -> Builder {
@@ -265,7 +198,7 @@ impl Builder {
265
198
266
199
Filter {
267
200
directives : mem:: take ( & mut directives) ,
268
- filter : mem:: replace ( & mut self . filter , None ) ,
201
+ filter : mem:: take ( & mut self . filter ) ,
269
202
}
270
203
}
271
204
}
@@ -276,15 +209,6 @@ impl Default for Builder {
276
209
}
277
210
}
278
211
279
- impl fmt:: Debug for Filter {
280
- fn fmt ( & self , f : & mut fmt:: Formatter ) -> fmt:: Result {
281
- f. debug_struct ( "Filter" )
282
- . field ( "filter" , & self . filter )
283
- . field ( "directives" , & self . directives )
284
- . finish ( )
285
- }
286
- }
287
-
288
212
impl fmt:: Debug for Builder {
289
213
fn fmt ( & self , f : & mut fmt:: Formatter ) -> fmt:: Result {
290
214
if self . built {
@@ -298,6 +222,82 @@ impl fmt::Debug for Builder {
298
222
}
299
223
}
300
224
225
+ #[ derive( Debug ) ]
226
+ struct Directive {
227
+ name : Option < String > ,
228
+ level : LevelFilter ,
229
+ }
230
+
231
+ /// A log filter.
232
+ ///
233
+ /// This struct can be used to determine whether or not a log record
234
+ /// should be written to the output.
235
+ /// Use the [`Builder`] type to parse and construct a `Filter`.
236
+ ///
237
+ /// [`Builder`]: struct.Builder.html
238
+ pub struct Filter {
239
+ directives : Vec < Directive > ,
240
+ filter : Option < inner:: Filter > ,
241
+ }
242
+
243
+ impl Filter {
244
+ /// Returns the maximum `LevelFilter` that this filter instance is
245
+ /// configured to output.
246
+ ///
247
+ /// # Example
248
+ ///
249
+ /// ```rust
250
+ /// use log::LevelFilter;
251
+ /// use env_logger::filter::Builder;
252
+ ///
253
+ /// let mut builder = Builder::new();
254
+ /// builder.filter(Some("module1"), LevelFilter::Info);
255
+ /// builder.filter(Some("module2"), LevelFilter::Error);
256
+ ///
257
+ /// let filter = builder.build();
258
+ /// assert_eq!(filter.filter(), LevelFilter::Info);
259
+ /// ```
260
+ pub fn filter ( & self ) -> LevelFilter {
261
+ self . directives
262
+ . iter ( )
263
+ . map ( |d| d. level )
264
+ . max ( )
265
+ . unwrap_or ( LevelFilter :: Off )
266
+ }
267
+
268
+ /// Checks if this record matches the configured filter.
269
+ pub fn matches ( & self , record : & Record ) -> bool {
270
+ if !self . enabled ( record. metadata ( ) ) {
271
+ return false ;
272
+ }
273
+
274
+ if let Some ( filter) = self . filter . as_ref ( ) {
275
+ if !filter. is_match ( & record. args ( ) . to_string ( ) ) {
276
+ return false ;
277
+ }
278
+ }
279
+
280
+ true
281
+ }
282
+
283
+ /// Determines if a log message with the specified metadata would be logged.
284
+ pub fn enabled ( & self , metadata : & Metadata ) -> bool {
285
+ let level = metadata. level ( ) ;
286
+ let target = metadata. target ( ) ;
287
+
288
+ enabled ( & self . directives , level, target)
289
+ }
290
+ }
291
+
292
+ impl fmt:: Debug for Filter {
293
+ fn fmt ( & self , f : & mut fmt:: Formatter ) -> fmt:: Result {
294
+ f. debug_struct ( "Filter" )
295
+ . field ( "filter" , & self . filter )
296
+ . field ( "directives" , & self . directives )
297
+ . finish ( )
298
+ }
299
+ }
300
+
301
301
/// Parse a logging specification string (e.g: "crate1,crate2::mod3,crate3::x=error/foo")
302
302
/// and return a vector with log directives.
303
303
fn parse_spec ( spec : & str ) -> ( Vec < Directive > , Option < inner:: Filter > ) {
0 commit comments