@@ -202,18 +202,10 @@ impl fmt::Debug for Formatter {
202
202
203
203
pub ( crate ) type FormatFn = Box < dyn Fn ( & mut Formatter , & Record < ' _ > ) -> io:: Result < ( ) > + Sync + Send > ;
204
204
205
+ #[ derive( Default ) ]
205
206
pub ( crate ) struct Builder {
206
- pub ( crate ) format_timestamp : Option < TimestampPrecision > ,
207
- pub ( crate ) format_module_path : bool ,
208
- pub ( crate ) format_target : bool ,
209
- pub ( crate ) format_level : bool ,
210
- pub ( crate ) format_indent : Option < usize > ,
207
+ pub ( crate ) default_format : DefaultFormat ,
211
208
pub ( crate ) custom_format : Option < FormatFn > ,
212
- pub ( crate ) format_suffix : & ' static str ,
213
- pub ( crate ) format_file : bool ,
214
- pub ( crate ) format_line_number : bool ,
215
- #[ cfg( feature = "kv" ) ]
216
- pub ( crate ) kv_format : Option < Box < KvFormatFn > > ,
217
209
built : bool ,
218
210
}
219
211
@@ -239,17 +231,21 @@ impl Builder {
239
231
} else {
240
232
Box :: new ( move |buf, record| {
241
233
let fmt = DefaultFormatWriter {
242
- timestamp : built. format_timestamp ,
243
- module_path : built. format_module_path ,
244
- target : built. format_target ,
245
- level : built. format_level ,
234
+ timestamp : built. default_format . timestamp ,
235
+ module_path : built. default_format . module_path ,
236
+ target : built. default_format . target ,
237
+ level : built. default_format . level ,
246
238
written_header_value : false ,
247
- indent : built. format_indent ,
248
- suffix : built. format_suffix ,
249
- source_file : built. format_file ,
250
- source_line_number : built. format_line_number ,
239
+ indent : built. default_format . indent ,
240
+ suffix : built. default_format . suffix ,
241
+ source_file : built. default_format . source_file ,
242
+ source_line_number : built. default_format . source_line_number ,
251
243
#[ cfg( feature = "kv" ) ]
252
- kv_format : built. kv_format . as_deref ( ) . unwrap_or ( & default_kv_format) ,
244
+ kv_format : built
245
+ . default_format
246
+ . kv_format
247
+ . as_deref ( )
248
+ . unwrap_or ( & default_kv_format) ,
253
249
buf,
254
250
} ;
255
251
@@ -259,25 +255,6 @@ impl Builder {
259
255
}
260
256
}
261
257
262
- impl Default for Builder {
263
- fn default ( ) -> Self {
264
- Builder {
265
- format_timestamp : Some ( Default :: default ( ) ) ,
266
- format_module_path : false ,
267
- format_target : true ,
268
- format_level : true ,
269
- format_file : false ,
270
- format_line_number : false ,
271
- format_indent : Some ( 4 ) ,
272
- custom_format : None ,
273
- format_suffix : "\n " ,
274
- #[ cfg( feature = "kv" ) ]
275
- kv_format : None ,
276
- built : false ,
277
- }
278
- }
279
- }
280
-
281
258
#[ cfg( feature = "color" ) ]
282
259
type SubtleStyle = StyledValue < & ' static str > ;
283
260
#[ cfg( not( feature = "color" ) ) ]
@@ -307,6 +284,39 @@ impl<T: Display> Display for StyledValue<T> {
307
284
#[ cfg( not( feature = "color" ) ) ]
308
285
type StyledValue < T > = T ;
309
286
287
+ /// The default format.
288
+ ///
289
+ /// This format needs to work with any combination of crate features.
290
+ pub ( crate ) struct DefaultFormat {
291
+ pub ( crate ) timestamp : Option < TimestampPrecision > ,
292
+ pub ( crate ) module_path : bool ,
293
+ pub ( crate ) target : bool ,
294
+ pub ( crate ) level : bool ,
295
+ pub ( crate ) source_file : bool ,
296
+ pub ( crate ) source_line_number : bool ,
297
+ pub ( crate ) indent : Option < usize > ,
298
+ pub ( crate ) suffix : & ' static str ,
299
+ #[ cfg( feature = "kv" ) ]
300
+ pub ( crate ) kv_format : Option < Box < KvFormatFn > > ,
301
+ }
302
+
303
+ impl Default for DefaultFormat {
304
+ fn default ( ) -> Self {
305
+ Self {
306
+ timestamp : Some ( Default :: default ( ) ) ,
307
+ module_path : false ,
308
+ target : true ,
309
+ level : true ,
310
+ source_file : false ,
311
+ source_line_number : false ,
312
+ indent : Some ( 4 ) ,
313
+ suffix : "\n " ,
314
+ #[ cfg( feature = "kv" ) ]
315
+ kv_format : None ,
316
+ }
317
+ }
318
+ }
319
+
310
320
/// The default format.
311
321
///
312
322
/// This format needs to work with any combination of crate features.
0 commit comments