@@ -63,26 +63,28 @@ pub mod log_impl {
6363
6464 impl ErrorLogger for LogAdapter {
6565 fn log_error ( & self , error : & dyn ForgeError , level : ErrorLevel ) {
66+ let kind = error. kind ( ) ;
67+ let message = error. dev_message ( ) ;
6668 match level {
67- ErrorLevel :: Critical => error ! ( target: "error-forge" , "[CRITICAL] [{}] {}" , error . kind ( ) , error . dev_message ( ) ) ,
68- ErrorLevel :: Error => error ! ( target: "error-forge" , "[ERROR] [{}] {}" , error . kind ( ) , error . dev_message ( ) ) ,
69- ErrorLevel :: Warning => warn ! ( target: "error-forge" , "[WARNING] [{}] {}" , error . kind ( ) , error . dev_message ( ) ) ,
70- ErrorLevel :: Info => info ! ( target: "error-forge" , "[INFO] [{}] {}" , error . kind ( ) , error . dev_message ( ) ) ,
71- ErrorLevel :: Debug => debug ! ( target: "error-forge" , "[DEBUG] [{}] {}" , error . kind ( ) , error . dev_message ( ) ) ,
69+ ErrorLevel :: Critical => error ! ( target: "error-forge" , "[CRITICAL] [{kind }] {message}" ) ,
70+ ErrorLevel :: Error => error ! ( target: "error-forge" , "[ERROR] [{kind }] {message}" ) ,
71+ ErrorLevel :: Warning => warn ! ( target: "error-forge" , "[WARNING] [{kind }] {message}" ) ,
72+ ErrorLevel :: Info => info ! ( target: "error-forge" , "[INFO] [{kind }] {message}" ) ,
73+ ErrorLevel :: Debug => debug ! ( target: "error-forge" , "[DEBUG] [{kind }] {message}" ) ,
7274 }
7375 }
7476
7577 fn log_message ( & self , message : & str , level : ErrorLevel ) {
7678 match level {
77- ErrorLevel :: Critical | ErrorLevel :: Error => error ! ( target: "error-forge" , "{}" , message ) ,
78- ErrorLevel :: Warning => warn ! ( target: "error-forge" , "{}" , message ) ,
79- ErrorLevel :: Info => info ! ( target: "error-forge" , "{}" , message ) ,
80- ErrorLevel :: Debug => debug ! ( target: "error-forge" , "{}" , message ) ,
79+ ErrorLevel :: Critical | ErrorLevel :: Error => error ! ( target: "error-forge" , "{message}" ) ,
80+ ErrorLevel :: Warning => warn ! ( target: "error-forge" , "{message}" ) ,
81+ ErrorLevel :: Info => info ! ( target: "error-forge" , "{message}" ) ,
82+ ErrorLevel :: Debug => debug ! ( target: "error-forge" , "{message}" ) ,
8183 }
8284 }
8385
8486 fn log_panic ( & self , info : & std:: panic:: PanicHookInfo ) {
85- error ! ( target: "error-forge" , "PANIC: {}" , info ) ;
87+ error ! ( target: "error-forge" , "PANIC: {info}" ) ;
8688 }
8789 }
8890
@@ -113,10 +115,10 @@ pub mod tracing_impl {
113115
114116 fn log_message ( & self , message : & str , level : ErrorLevel ) {
115117 match level {
116- ErrorLevel :: Critical | ErrorLevel :: Error => error ! ( target: "error-forge" , "{}" , message ) ,
117- ErrorLevel :: Warning => warn ! ( target: "error-forge" , "{}" , message ) ,
118- ErrorLevel :: Info => info ! ( target: "error-forge" , "{}" , message ) ,
119- ErrorLevel :: Debug => debug ! ( target: "error-forge" , "{}" , message ) ,
118+ ErrorLevel :: Critical | ErrorLevel :: Error => error ! ( target: "error-forge" , "{message}" ) ,
119+ ErrorLevel :: Warning => warn ! ( target: "error-forge" , "{message}" ) ,
120+ ErrorLevel :: Info => info ! ( target: "error-forge" , "{message}" ) ,
121+ ErrorLevel :: Debug => debug ! ( target: "error-forge" , "{message}" ) ,
120122 }
121123 }
122124
@@ -135,21 +137,26 @@ pub mod tracing_impl {
135137pub mod custom {
136138 use super :: * ;
137139
140+ // Type aliases for complex types
141+ /// Function type for error logging
142+ type ErrorFn = Box < dyn Fn ( & dyn ForgeError , ErrorLevel ) + Send + Sync + ' static > ;
143+ /// Function type for message logging
144+ type MessageFn = Box < dyn Fn ( & str , ErrorLevel ) + Send + Sync + ' static > ;
145+ /// Function type for panic logging
146+ type PanicFn = Box < dyn Fn ( & std:: panic:: PanicHookInfo ) + Send + Sync + ' static > ;
147+
138148 /// Builder for creating a custom error logger
149+ #[ derive( Default ) ]
139150 pub struct ErrorLoggerBuilder {
140- error_fn : Option < Box < dyn Fn ( & dyn ForgeError , ErrorLevel ) + Send + Sync + ' static > > ,
141- message_fn : Option < Box < dyn Fn ( & str , ErrorLevel ) + Send + Sync + ' static > > ,
142- panic_fn : Option < Box < dyn Fn ( & std :: panic :: PanicHookInfo ) + Send + Sync + ' static > > ,
151+ error_fn : Option < ErrorFn > ,
152+ message_fn : Option < MessageFn > ,
153+ panic_fn : Option < PanicFn > ,
143154 }
144-
155+
145156 impl ErrorLoggerBuilder {
146157 /// Create a new error logger builder
147158 pub fn new ( ) -> Self {
148- Self {
149- error_fn : None ,
150- message_fn : None ,
151- panic_fn : None ,
152- }
159+ Self :: default ( )
153160 }
154161
155162 /// Set the function to use for logging errors
@@ -191,9 +198,9 @@ pub mod custom {
191198
192199 /// A custom error logger that uses user-provided functions
193200 pub struct CustomErrorLogger {
194- error_fn : Option < Box < dyn Fn ( & dyn ForgeError , ErrorLevel ) + Send + Sync + ' static > > ,
195- message_fn : Option < Box < dyn Fn ( & str , ErrorLevel ) + Send + Sync + ' static > > ,
196- panic_fn : Option < Box < dyn Fn ( & std :: panic :: PanicHookInfo ) + Send + Sync + ' static > > ,
201+ error_fn : Option < ErrorFn > ,
202+ message_fn : Option < MessageFn > ,
203+ panic_fn : Option < PanicFn > ,
197204 }
198205
199206 impl ErrorLogger for CustomErrorLogger {
@@ -233,17 +240,19 @@ mod tests {
233240
234241 impl ErrorLogger for TestLogger {
235242 fn log_error ( & self , error : & dyn ForgeError , level : ErrorLevel ) {
236- let log = format ! ( "{:?}: [{}] {}" , level, error. kind( ) , error. dev_message( ) ) ;
243+ let kind = error. kind ( ) ;
244+ let message = error. dev_message ( ) ;
245+ let log = format ! ( "{level:?}: [{kind}] {message}" ) ;
237246 self . logs . lock ( ) . unwrap ( ) . push ( log) ;
238247 }
239248
240249 fn log_message ( & self , message : & str , level : ErrorLevel ) {
241- let log = format ! ( "{:?}: {}" , level , message ) ;
250+ let log = format ! ( "{level :?}: {message}" ) ;
242251 self . logs . lock ( ) . unwrap ( ) . push ( log) ;
243252 }
244253
245254 fn log_panic ( & self , info : & std:: panic:: PanicHookInfo ) {
246- let log = format ! ( "PANIC: {}" , info ) ;
255+ let log = format ! ( "PANIC: {info}" ) ;
247256 self . logs . lock ( ) . unwrap ( ) . push ( log) ;
248257 }
249258 }
0 commit comments