@@ -144,6 +144,7 @@ pub(crate) struct Builder {
144
144
pub format_level : bool ,
145
145
pub format_indent : Option < usize > ,
146
146
pub custom_format : Option < FormatFn > ,
147
+ pub format_suffix : & ' static str ,
147
148
built : bool ,
148
149
}
149
150
@@ -155,6 +156,7 @@ impl Default for Builder {
155
156
format_level : true ,
156
157
format_indent : Some ( 4 ) ,
157
158
custom_format : None ,
159
+ format_suffix : "\n " ,
158
160
built : false ,
159
161
}
160
162
}
@@ -187,6 +189,7 @@ impl Builder {
187
189
level : built. format_level ,
188
190
written_header_value : false ,
189
191
indent : built. format_indent ,
192
+ suffix : built. format_suffix ,
190
193
buf,
191
194
} ;
192
195
@@ -211,6 +214,7 @@ struct DefaultFormat<'a> {
211
214
written_header_value : bool ,
212
215
indent : Option < usize > ,
213
216
buf : & ' a mut Formatter ,
217
+ suffix : & ' a str ,
214
218
}
215
219
216
220
impl < ' a > DefaultFormat < ' a > {
@@ -319,7 +323,7 @@ impl<'a> DefaultFormat<'a> {
319
323
fn write_args ( & mut self , record : & Record ) -> io:: Result < ( ) > {
320
324
match self . indent {
321
325
// Fast path for no indentation
322
- None => writeln ! ( self . buf, "{}" , record. args( ) ) ,
326
+ None => write ! ( self . buf, "{}{} " , record. args( ) , self . suffix ) ,
323
327
324
328
Some ( indent_count) => {
325
329
// Create a wrapper around the buffer only if we have to actually indent the message
@@ -334,7 +338,13 @@ impl<'a> DefaultFormat<'a> {
334
338
let mut first = true ;
335
339
for chunk in buf. split ( |& x| x == b'\n' ) {
336
340
if !first {
337
- write ! ( self . fmt. buf, "\n {:width$}" , "" , width = self . indent_count) ?;
341
+ write ! (
342
+ self . fmt. buf,
343
+ "{}{:width$}" ,
344
+ self . fmt. suffix,
345
+ "" ,
346
+ width = self . indent_count
347
+ ) ?;
338
348
}
339
349
self . fmt . buf . write_all ( chunk) ?;
340
350
first = false ;
@@ -357,7 +367,7 @@ impl<'a> DefaultFormat<'a> {
357
367
write ! ( wrapper, "{}" , record. args( ) ) ?;
358
368
}
359
369
360
- writeln ! ( self . buf) ?;
370
+ write ! ( self . buf, "{}" , self . suffix ) ?;
361
371
362
372
Ok ( ( ) )
363
373
}
@@ -402,6 +412,7 @@ mod tests {
402
412
level : true ,
403
413
written_header_value : false ,
404
414
indent : None ,
415
+ suffix : "\n " ,
405
416
buf : & mut f,
406
417
} ) ;
407
418
@@ -422,6 +433,7 @@ mod tests {
422
433
level : false ,
423
434
written_header_value : false ,
424
435
indent : None ,
436
+ suffix : "\n " ,
425
437
buf : & mut f,
426
438
} ) ;
427
439
@@ -442,6 +454,7 @@ mod tests {
442
454
level : true ,
443
455
written_header_value : false ,
444
456
indent : Some ( 4 ) ,
457
+ suffix : "\n " ,
445
458
buf : & mut f,
446
459
} ) ;
447
460
@@ -462,6 +475,7 @@ mod tests {
462
475
level : true ,
463
476
written_header_value : false ,
464
477
indent : Some ( 0 ) ,
478
+ suffix : "\n " ,
465
479
buf : & mut f,
466
480
} ) ;
467
481
@@ -482,9 +496,52 @@ mod tests {
482
496
level : false ,
483
497
written_header_value : false ,
484
498
indent : Some ( 4 ) ,
499
+ suffix : "\n " ,
485
500
buf : & mut f,
486
501
} ) ;
487
502
488
503
assert_eq ! ( "log\n message\n " , written) ;
489
504
}
505
+
506
+ #[ test]
507
+ fn format_suffix ( ) {
508
+ let writer = writer:: Builder :: new ( )
509
+ . write_style ( WriteStyle :: Never )
510
+ . build ( ) ;
511
+
512
+ let mut f = Formatter :: new ( & writer) ;
513
+
514
+ let written = write ( DefaultFormat {
515
+ timestamp : None ,
516
+ module_path : false ,
517
+ level : false ,
518
+ written_header_value : false ,
519
+ indent : None ,
520
+ suffix : "\n \n " ,
521
+ buf : & mut f,
522
+ } ) ;
523
+
524
+ assert_eq ! ( "log\n message\n \n " , written) ;
525
+ }
526
+
527
+ #[ test]
528
+ fn format_suffix_with_indent ( ) {
529
+ let writer = writer:: Builder :: new ( )
530
+ . write_style ( WriteStyle :: Never )
531
+ . build ( ) ;
532
+
533
+ let mut f = Formatter :: new ( & writer) ;
534
+
535
+ let written = write ( DefaultFormat {
536
+ timestamp : None ,
537
+ module_path : false ,
538
+ level : false ,
539
+ written_header_value : false ,
540
+ indent : Some ( 4 ) ,
541
+ suffix : "\n \n " ,
542
+ buf : & mut f,
543
+ } ) ;
544
+
545
+ assert_eq ! ( "log\n \n message\n \n " , written) ;
546
+ }
490
547
}
0 commit comments