Custom Logger Implementation #279
Shourya742
started this conversation in
Ideas
Replies: 1 comment 5 replies
-
@Shourya742 pub struct CustomLogger {
pub(crate) id: String,
pub lines: Mutex<HashMap<(&'static str, String), usize>>,
} All I know that any type that implements |
Beta Was this translation helpful? Give feedback.
5 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Custom Logger
Need for Custom Logger
Logging in Rust
Rust implements logging using the facade pattern, a design concept from the "Gang of Four." Here's how it works:
This approach allows for flexibility—you can change the logging crate without altering your main code.
When logging in Rust, you typically import two libraries:
Custom Logger Implementation
Designing the Facade Log Crate
1. Level Enum
The Level enum represents the logger's verbosity levels, from lowest to highest priority:
2. LevelFilter Enum
The LevelFilter enum defines log level filters, which can be compared directly to a Level:
3. Record Structure
The Record structure contains the log message "payload," passed to the Log trait's log method:
4. Record Implementation
The Record implementation provides methods to access and manipulate log record data:
5. RecordBuilder Structure
The RecordBuilder structure implements the Builder pattern for Record instances:
6. Metadata Structure
The Metadata structure contains log message information, including severity and target:
7. MetadataBuilder Structure
The MetadataBuilder structure implements the Builder pattern for Metadata instances:
8. Log Trait
The Log trait defines the core operations required for a logger:
Designing the Custom Logger
Our custom logger implementation consists of two main components:
1. Custom Logger Structure
This structure defines our logger, with an ID and a thread-safe hash map to store log lines.
2. Log Trait Implementation
Relationship Diagram
Beta Was this translation helpful? Give feedback.
All reactions