@@ -111,7 +111,7 @@ pub struct Logger {
111111 level_filter : Atomic < LevelFilter > ,
112112 sinks : Sinks ,
113113 flush_level_filter : Atomic < LevelFilter > ,
114- error_handler : SpinRwLock < Option < ErrorHandler > > ,
114+ error_handler : SpinRwLock < ErrorHandler > ,
115115 periodic_flusher : Mutex < Option < ( Duration , PeriodicWorker ) > > ,
116116}
117117
@@ -148,30 +148,30 @@ impl Debug for Logger {
148148impl Logger {
149149 /// Gets a [`LoggerBuilder`] with default parameters:
150150 ///
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()` ] |
159159 ///
160160 /// [name]: LoggerBuilder::name
161161 /// [sinks]: LoggerBuilder::sink
162162 /// [level_filter]: LoggerBuilder::level_filter
163163 /// [flush_level_filter]: LoggerBuilder::flush_level_filter
164164 /// [flush_period]: Logger::set_flush_period
165165 /// [error_handler]: LoggerBuilder::error_handler
166- /// [default error handler ]: error/index.html# default-error-handler
166+ /// [`ErrorHandler:: default()` ]: crate:: error::ErrorHandler:: default()
167167 #[ must_use]
168168 pub fn builder ( ) -> LoggerBuilder {
169169 LoggerBuilder {
170170 name : None ,
171171 level_filter : LevelFilter :: MoreSevereEqual ( Level :: Info ) ,
172172 sinks : vec ! [ ] ,
173173 flush_level_filter : LevelFilter :: Off ,
174- error_handler : None ,
174+ error_handler : ErrorHandler :: default ( ) ,
175175 }
176176 }
177177
@@ -377,14 +377,17 @@ impl Logger {
377377 /// # Examples
378378 ///
379379 /// ```
380- /// use spdlog::prelude::*;
380+ /// use spdlog::{ prelude::*, ErrorHandler} ;
381381 ///
382- /// spdlog::default_logger().set_error_handler(Some (|err| {
382+ /// spdlog::default_logger().set_error_handler(ErrorHandler::new (|err| {
383383 /// panic!("An error occurred in the default logger: {}", err)
384384 /// }));
385385 /// ```
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 ( ) ;
388391 }
389392
390393 /// Forks and configures a separate new logger.
@@ -506,17 +509,13 @@ impl Logger {
506509 }
507510
508511 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+ )
520519 }
521520
522521 #[ must_use]
@@ -550,7 +549,7 @@ pub struct LoggerBuilder {
550549 level_filter : LevelFilter ,
551550 sinks : Sinks ,
552551 flush_level_filter : LevelFilter ,
553- error_handler : Option < ErrorHandler > ,
552+ error_handler : ErrorHandler ,
554553}
555554
556555impl LoggerBuilder {
@@ -624,8 +623,11 @@ impl LoggerBuilder {
624623 ///
625624 /// See the documentation of [`Logger::set_error_handler`] for the
626625 /// 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 ( ) ;
629631 self
630632 }
631633
0 commit comments