1
1
#![ doc = include_str ! ( "../.github/README.md" ) ]
2
- // Logging-rs.
3
- // Version: 1.0 .0
2
+ // Logging-rs
3
+ // Version: 1.1 .0
4
4
5
5
// Copyright (c) 2023-present I Language Development.
6
6
@@ -62,25 +62,6 @@ pub enum Level {
62
62
}
63
63
64
64
65
- //////////////////
66
- // HTTP METHODS //
67
- //////////////////
68
-
69
- // HTTP methods
70
- /*#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
71
- pub enum HTTPMethod {
72
- /// GET request. The default value
73
- #[default]
74
- GET,
75
- /// POST request
76
- POST,
77
- /// PUT request
78
- PUT,
79
- /// PATCH request
80
- PATCH
81
- }*/
82
-
83
-
84
65
/////////////////
85
66
// OUTPUT TYPE //
86
67
/////////////////
@@ -97,12 +78,7 @@ pub enum Output {
97
78
FILE {
98
79
/// File path
99
80
path : String
100
- } ,
101
- // Web request (not currently implemented)
102
- /*REQUEST {
103
- method: HTTPMethod,
104
- url: String
105
- }*/
81
+ }
106
82
}
107
83
108
84
@@ -217,7 +193,8 @@ impl Formatter {
217
193
/// - [`Formatter`]
218
194
/// - [`Output`]
219
195
/// - [`Level`]
220
- pub fn format < ' a > ( & self , output : Output , level : Level , message : & ' a str , mut arguments : Vec < ( & str , String ) > ) -> String {
196
+ pub fn format < ' a > ( & self , output : Output , level : Level , message : & ' a str , mut extra_arguments : Vec < ( & str , String ) > ) -> String {
197
+ let mut arguments: Vec < ( & str , String ) > = vec ! [ ] ;
221
198
let mut colors: Vec < ( & str , String ) > = vec ! [
222
199
// Formatting codes
223
200
( "end" , "\x1b [0m" . to_string( ) ) ,
@@ -286,6 +263,7 @@ impl Formatter {
286
263
287
264
arguments. push ( ( "message" , message. to_string ( ) ) ) ;
288
265
arguments. push ( ( "timestamp" , chrono:: Local :: now ( ) . format ( & self . timestamp_format ) . to_string ( ) ) ) ;
266
+ arguments. append ( & mut extra_arguments) ;
289
267
290
268
let mut result: String = match output {
291
269
Output :: STDOUT | Output :: STDERR => {
@@ -384,6 +362,7 @@ impl Logger {
384
362
/// - `message`: The message to log
385
363
/// - `level`: The log [`Level`] to use for logging
386
364
/// - `path`: The path of the calling file
365
+ /// - `arguments`: A list of arguments to use when formatting the message
387
366
///
388
367
/// # Returns
389
368
///
@@ -397,7 +376,8 @@ impl Logger {
397
376
/// logger.log(
398
377
/// "Some message",
399
378
/// logging_rs::Level::default(),
400
- /// "src/lib.rs"
379
+ /// "src/lib.rs",
380
+ /// vec![]
401
381
/// );
402
382
/// ```
403
383
///
@@ -411,9 +391,10 @@ impl Logger {
411
391
/// - [`log!()`]
412
392
/// - [`Logger`]
413
393
/// - [`Level`]
414
- pub fn log ( & self , message : & str , level : Level , path : & str ) {
394
+ pub fn log ( & self , message : & str , level : Level , path : & str , mut arguments : Vec < ( & str , String ) > ) {
395
+ arguments. push ( ( "path" , path. to_string ( ) ) ) ;
415
396
for writable in self . writable_list . clone ( ) {
416
- let formatted: String = self . formatter . format ( writable. clone ( ) , level, message, vec ! [ ( "path" , path . to_string ( ) ) ] ) ;
397
+ let formatted: String = self . formatter . format ( writable. clone ( ) , level, message, arguments . clone ( ) ) ;
417
398
418
399
match writable {
419
400
Output :: STDOUT => println ! ( "{}" , formatted) ,
@@ -429,16 +410,7 @@ impl Logger {
429
410
if let Err ( error) = write {
430
411
errors:: Error :: new ( "Writing error" , "The file could not be edited" , 2 ) . raise ( format ! ( "File: {}\n Text: {}\n Error: {}" , path, formatted, error) . as_str ( ) ) ;
431
412
}
432
- } ,
433
- // TODO (ElBe): Add HTTP support
434
- /*Output::REQUEST { ref method, ref url } => {
435
- match method {
436
- HTTPMethod::GET => {},
437
- HTTPMethod::POST => {},
438
- HTTPMethod::PUT => {},
439
- HTTPMethod::PATCH => {},
440
- }
441
- }*/
413
+ }
442
414
}
443
415
}
444
416
}
@@ -462,6 +434,7 @@ impl Logger {
462
434
/// # use logging_rs;
463
435
/// # let logger: logging_rs::Logger = logging_rs::Logger::default();
464
436
/// logging_rs::debug!(logger, "A message");
437
+ /// logging_rs::debug!(logger, "A message with more {{details}}", "details" = "stuff");
465
438
/// ```
466
439
///
467
440
/// # See also
@@ -476,7 +449,19 @@ impl Logger {
476
449
macro_rules! debug {
477
450
( $logger: expr, $message: expr) => {
478
451
{
479
- $logger. log( $message, $crate:: Level :: DEBUG , std:: panic:: Location :: caller( ) . file( ) ) ;
452
+ $logger. log( $message, $crate:: Level :: DEBUG , std:: panic:: Location :: caller( ) . file( ) , vec![ ] ) ;
453
+ }
454
+ } ;
455
+
456
+ ( $logger: expr, $message: expr, $( $argument_name: literal = $argument_value: literal) ,* $( , ) ?) => {
457
+ {
458
+ let mut arguments: Vec <( & str , String ) > = vec![ ] ;
459
+
460
+ $(
461
+ arguments. push( ( $argument_name, $argument_value. to_string( ) ) ) ;
462
+ ) *
463
+
464
+ $logger. log( $message, $crate:: Level :: DEBUG , std:: panic:: Location :: caller( ) . file( ) , arguments) ;
480
465
}
481
466
} ;
482
467
}
@@ -494,6 +479,7 @@ macro_rules! debug {
494
479
/// # use logging_rs;
495
480
/// # let logger: logging_rs::Logger = logging_rs::Logger::default();
496
481
/// logging_rs::info!(logger, "A message");
482
+ /// logging_rs::info!(logger, "A message with more {{details}}", "details" = "stuff");
497
483
/// ```
498
484
///
499
485
/// # See also
@@ -508,9 +494,21 @@ macro_rules! debug {
508
494
macro_rules! info {
509
495
( $logger: expr, $message: expr) => {
510
496
{
511
- $logger. log( $message, $crate:: Level :: INFO , std:: panic:: Location :: caller( ) . file( ) ) ;
497
+ $logger. log( $message, $crate:: Level :: INFO , std:: panic:: Location :: caller( ) . file( ) , vec! [ ] ) ;
512
498
}
513
499
} ;
500
+
501
+ ( $logger: expr, $message: expr, $( $argument_name: literal = $argument_value: literal) ,* $( , ) ?) => {
502
+ {
503
+ let mut arguments: Vec <( & str , String ) > = vec![ ] ;
504
+
505
+ $(
506
+ arguments. push( ( $argument_name, $argument_value. to_string( ) ) ) ;
507
+ ) *
508
+
509
+ $logger. log( $message, $crate:: Level :: INFO , std:: panic:: Location :: caller( ) . file( ) , arguments) ;
510
+ }
511
+ }
514
512
}
515
513
516
514
/// Logs the given message with logging level [`Level::WARN`].
@@ -526,6 +524,7 @@ macro_rules! info {
526
524
/// # use logging_rs;
527
525
/// # let logger: logging_rs::Logger = logging_rs::Logger::default();
528
526
/// logging_rs::warn!(logger, "A message");
527
+ /// logging_rs::warn!(logger, "A message with more {{details}}", "details" = "stuff");
529
528
/// ```
530
529
///
531
530
/// # See also
@@ -540,9 +539,21 @@ macro_rules! info {
540
539
macro_rules! warn {
541
540
( $logger: expr, $message: expr) => {
542
541
{
543
- $logger. log( $message, $crate:: Level :: WARN , std:: panic:: Location :: caller( ) . file( ) ) ;
542
+ $logger. log( $message, $crate:: Level :: WARN , std:: panic:: Location :: caller( ) . file( ) , vec! [ ] ) ;
544
543
}
545
544
} ;
545
+
546
+ ( $logger: expr, $message: expr, $( $argument_name: literal = $argument_value: literal) ,* $( , ) ?) => {
547
+ {
548
+ let mut arguments: Vec <( & str , String ) > = vec![ ] ;
549
+
550
+ $(
551
+ arguments. push( ( $argument_name, $argument_value. to_string( ) ) ) ;
552
+ ) *
553
+
554
+ $logger. log( $message, $crate:: Level :: WARN , std:: panic:: Location :: caller( ) . file( ) , arguments) ;
555
+ }
556
+ }
546
557
}
547
558
548
559
/// Logs the given message with logging level [`Level::ERROR`].
@@ -558,6 +569,7 @@ macro_rules! warn {
558
569
/// # use logging_rs;
559
570
/// # let logger: logging_rs::Logger = logging_rs::Logger::default();
560
571
/// logging_rs::error!(logger, "A message");
572
+ /// logging_rs::error!(logger, "A message with more {{details}}", "details" = "stuff");
561
573
/// ```
562
574
///
563
575
/// # See also
@@ -572,9 +584,21 @@ macro_rules! warn {
572
584
macro_rules! error {
573
585
( $logger: expr, $message: expr) => {
574
586
{
575
- $logger. log( $message, $crate:: Level :: ERROR , std:: panic:: Location :: caller( ) . file( ) ) ;
587
+ $logger. log( $message, $crate:: Level :: ERROR , std:: panic:: Location :: caller( ) . file( ) , vec! [ ] ) ;
576
588
}
577
589
} ;
590
+
591
+ ( $logger: expr, $message: expr, $( $argument_name: literal = $argument_value: literal) ,* $( , ) ?) => {
592
+ {
593
+ let mut arguments: Vec <( & str , String ) > = vec![ ] ;
594
+
595
+ $(
596
+ arguments. push( ( $argument_name, $argument_value. to_string( ) ) ) ;
597
+ ) *
598
+
599
+ $logger. log( $message, $crate:: Level :: ERROR , std:: panic:: Location :: caller( ) . file( ) , arguments) ;
600
+ }
601
+ }
578
602
}
579
603
580
604
/// Logs the given message with logging level [`Level::FATAL`].
@@ -590,6 +614,7 @@ macro_rules! error {
590
614
/// # use logging_rs;
591
615
/// # let logger: logging_rs::Logger = logging_rs::Logger::default();
592
616
/// logging_rs::fatal!(logger, "A message");
617
+ /// logging_rs::fatal!(logger, "A message with more {{details}}", "details" = "stuff");
593
618
/// ```
594
619
///
595
620
/// # See also
@@ -604,9 +629,21 @@ macro_rules! error {
604
629
macro_rules! fatal {
605
630
( $logger: expr, $message: expr) => {
606
631
{
607
- $logger. log( $message, $crate:: Level :: FATAL , std:: panic:: Location :: caller( ) . file( ) ) ;
632
+ $logger. log( $message, $crate:: Level :: FATAL , std:: panic:: Location :: caller( ) . file( ) , vec! [ ] ) ;
608
633
}
609
634
} ;
635
+
636
+ ( $logger: expr, $message: expr, $( $argument_name: literal = $argument_value: literal) ,* $( , ) ?) => {
637
+ {
638
+ let mut arguments: Vec <( & str , String ) > = vec![ ] ;
639
+
640
+ $(
641
+ arguments. push( ( $argument_name, $argument_value. to_string( ) ) ) ;
642
+ ) *
643
+
644
+ $logger. log( $message, $crate:: Level :: FATAL , std:: panic:: Location :: caller( ) . file( ) , arguments) ;
645
+ }
646
+ }
610
647
}
611
648
612
649
/// Logs the given message with logging level [`Level::MESSAGE`].
@@ -622,6 +659,7 @@ macro_rules! fatal {
622
659
/// # use logging_rs;
623
660
/// # let logger: logging_rs::Logger = logging_rs::Logger::default();
624
661
/// logging_rs::log!(logger, "A message");
662
+ /// logging_rs::log!(logger, "A message with more {{details}}", "details" = "stuff");
625
663
/// ```
626
664
///
627
665
/// # See also
@@ -636,7 +674,19 @@ macro_rules! fatal {
636
674
macro_rules! log {
637
675
( $logger: expr, $message: expr) => {
638
676
{
639
- $logger. log( $message, $crate:: Level :: MESSAGE , std:: panic:: Location :: caller( ) . file( ) ) ;
677
+ $logger. log( $message, $crate:: Level :: MESSAGE , std:: panic:: Location :: caller( ) . file( ) , vec! [ ] ) ;
640
678
}
641
679
} ;
680
+
681
+ ( $logger: expr, $message: expr, $( $argument_name: literal = $argument_value: literal) ,* $( , ) ?) => {
682
+ {
683
+ let mut arguments: Vec <( & str , String ) > = vec![ ] ;
684
+
685
+ $(
686
+ arguments. push( ( $argument_name, $argument_value. to_string( ) ) ) ;
687
+ ) *
688
+
689
+ $logger. log( $message, $crate:: Level :: MESSAGE , std:: panic:: Location :: caller( ) . file( ) , arguments) ;
690
+ }
691
+ }
642
692
}
0 commit comments