quil/targets/target.rs
1use super::super::Context;
2use super::super::Level;
3
4/// Structs that implement `Target` can be used with
5/// [`Logger`](struct.Logger.html).
6///
7/// # Examples
8///
9/// An example of a basic target that prints to the console:
10///
11/// ```rust
12/// # use quil::prelude::*;
13/// # use quil::Level;
14/// # use quil::targets::Target;
15/// struct Print;
16///
17/// impl Target for Print {
18/// fn log(&mut self, level: Level, message: &str, context: &Context) {
19/// println!("LEVEL: {}, MSG: {}, CTX: {}", level, message, context);
20/// }
21/// }
22/// ```
23pub trait Target {
24 /// You shouldn't need to call `log` directly. `log` is called by logger
25 /// internally.
26 ///
27 /// Log a message to each target contained within the `TargetSet`.
28 ///
29 /// # Arguments
30 ///
31 /// * `level` - The log level the message is associated with.
32 /// * `message` - The message to log.
33 /// * `context` - The context containing meta data associated with the
34 /// message.
35 fn log(&mut self, level: Level, message: &str, context: &Context);
36}