@@ -111,7 +111,7 @@ pub struct Logger {
111
111
level_filter : Atomic < LevelFilter > ,
112
112
sinks : Sinks ,
113
113
flush_level_filter : Atomic < LevelFilter > ,
114
- error_handler : SpinRwLock < Option < ErrorHandler > > ,
114
+ error_handler : SpinRwLock < ErrorHandler > ,
115
115
periodic_flusher : Mutex < Option < ( Duration , PeriodicWorker ) > > ,
116
116
}
117
117
@@ -148,30 +148,30 @@ impl Debug for Logger {
148
148
impl Logger {
149
149
/// Gets a [`LoggerBuilder`] with default parameters:
150
150
///
151
- /// | Parameter | Default Value |
152
- /// |----------------------|-------------------------|
153
- /// | [name] | `None` |
154
- /// | [sinks] | `[]` |
155
- /// | [level_filter] | `MoreSevereEqual(Info)` |
156
- /// | [flush_level_filter] | `Off` |
157
- /// | [flush_period] | `None` |
158
- /// | [error_handler] | [default error handler ] |
151
+ /// | Parameter | Default Value |
152
+ /// |----------------------|----------------------------- |
153
+ /// | [name] | `None` |
154
+ /// | [sinks] | `[]` |
155
+ /// | [level_filter] | `MoreSevereEqual(Info)` |
156
+ /// | [flush_level_filter] | `Off` |
157
+ /// | [flush_period] | `None` |
158
+ /// | [error_handler] | [`ErrorHandler:: default()` ] |
159
159
///
160
160
/// [name]: LoggerBuilder::name
161
161
/// [sinks]: LoggerBuilder::sink
162
162
/// [level_filter]: LoggerBuilder::level_filter
163
163
/// [flush_level_filter]: LoggerBuilder::flush_level_filter
164
164
/// [flush_period]: Logger::set_flush_period
165
165
/// [error_handler]: LoggerBuilder::error_handler
166
- /// [default error handler ]: error/index.html# default-error-handler
166
+ /// [`ErrorHandler:: default()` ]: crate:: error::ErrorHandler:: default()
167
167
#[ must_use]
168
168
pub fn builder ( ) -> LoggerBuilder {
169
169
LoggerBuilder {
170
170
name : None ,
171
171
level_filter : LevelFilter :: MoreSevereEqual ( Level :: Info ) ,
172
172
sinks : vec ! [ ] ,
173
173
flush_level_filter : LevelFilter :: Off ,
174
- error_handler : None ,
174
+ error_handler : ErrorHandler :: default ( ) ,
175
175
}
176
176
}
177
177
@@ -377,14 +377,17 @@ impl Logger {
377
377
/// # Examples
378
378
///
379
379
/// ```
380
- /// use spdlog::prelude::*;
380
+ /// use spdlog::{ prelude::*, ErrorHandler} ;
381
381
///
382
- /// spdlog::default_logger().set_error_handler(Some (|err| {
382
+ /// spdlog::default_logger().set_error_handler(ErrorHandler::new (|err| {
383
383
/// panic!("An error occurred in the default logger: {}", err)
384
384
/// }));
385
385
/// ```
386
- pub fn set_error_handler ( & self , handler : Option < ErrorHandler > ) {
387
- * self . error_handler . write ( ) = handler;
386
+ pub fn set_error_handler < H > ( & self , handler : H )
387
+ where
388
+ H : Into < ErrorHandler > ,
389
+ {
390
+ * self . error_handler . write ( ) = handler. into ( ) ;
388
391
}
389
392
390
393
/// Forks and configures a separate new logger.
@@ -506,17 +509,13 @@ impl Logger {
506
509
}
507
510
508
511
fn handle_error ( & self , err : Error ) {
509
- if let Some ( handler) = self . error_handler . read ( ) . as_ref ( ) {
510
- handler ( err)
511
- } else {
512
- crate :: default_error_handler (
513
- format ! (
514
- "Logger ({})" ,
515
- self . name. as_ref( ) . map_or( "*no name*" , String :: as_str)
516
- ) ,
517
- err,
518
- ) ;
519
- }
512
+ self . error_handler . read ( ) . call_internal (
513
+ format ! (
514
+ "Logger ({})" ,
515
+ self . name. as_ref( ) . map_or( "*no name*" , String :: as_str)
516
+ ) ,
517
+ err,
518
+ )
520
519
}
521
520
522
521
#[ must_use]
@@ -550,7 +549,7 @@ pub struct LoggerBuilder {
550
549
level_filter : LevelFilter ,
551
550
sinks : Sinks ,
552
551
flush_level_filter : LevelFilter ,
553
- error_handler : Option < ErrorHandler > ,
552
+ error_handler : ErrorHandler ,
554
553
}
555
554
556
555
impl LoggerBuilder {
@@ -624,8 +623,11 @@ impl LoggerBuilder {
624
623
///
625
624
/// See the documentation of [`Logger::set_error_handler`] for the
626
625
/// description of this parameter.
627
- pub fn error_handler ( & mut self , handler : ErrorHandler ) -> & mut Self {
628
- self . error_handler = Some ( handler) ;
626
+ pub fn error_handler < H > ( & mut self , handler : H ) -> & mut Self
627
+ where
628
+ H : Into < ErrorHandler > ,
629
+ {
630
+ self . error_handler = handler. into ( ) ;
629
631
self
630
632
}
631
633
0 commit comments