1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
//! Quil is a easy to use library that supports message levels, multiple //! output targets, sub-loggers, and message contexts. Quil can be used across //! threads safely, and is easy to extend. //! //! # Examples //! //! Basic example: //! //! ```rust //! # #[macro_use] extern crate quil; //! # fn main() { //! # use quil::prelude::*; //! let logger = Logger::new(Console::new(), context!{ src: "root" }); //! //! logger.info("hello world"); //! # } //! ``` //! //! ```shell //! Tue, 7 Nov 2017 23:55:42 +0000 - info: hello world src=root //! ``` //! //! Sub-context example: //! //! ```rust //! # #[macro_use] extern crate quil; //! # fn main() { //! # use quil::prelude::*; //! let logger = Logger::new(Console::new(), context!{ src: "root", tag: "1" }); //! logger.info("hello"); //! //! let sub_logger = logger.ctx(context!{ tag: "", marker: "49" }); //! logger.info("world"); //! # } //! ``` //! //! ```shell //! Tue, 7 Nov 2017 23:55:42 +0000 - info: hello src=root tag=1 //! Tue, 7 Nov 2017 23:55:42 +0000 - info: world src=root marker=49 //! ``` //! //! Multi-target example: //! //! ```rust //! # #[macro_use] extern crate quil; //! # fn main() { //! # use quil::prelude::*; //! let logger = Logger::new(targets![ //! Console::new(), //! JsonFile::open("path/to/logfile.json"), //! ], context!{ some_meta_key: "some_meta_value" }); //! //! logger.info("hello"); //! //! let sub_logger = logger.ctx(context!{ marker: "49" }); //! logger.warn("world"); //! # } //! ``` //! //! _Shell_: //! //! ```shell //! Tue, 7 Nov 2017 23:55:42 +0000 - info: hello some_meta_key=some_meta_value //! Tue, 7 Nov 2017 23:55:42 +0000 - warn: world some_meta_key=some_meta_value marker=49 //! ``` //! _Log File_: //! //! ```json //! { "level": "info", "message": "hello", "context": { "some_meta_key": "some_meta_value" } } //! { "level": "warn", "message": "world", "context": { "some_meta_key": "some_meta_value", "marker": "49" } } //! ``` extern crate chrono; extern crate colored; #[macro_use] mod context; mod level; mod logger; #[macro_use] pub mod targets; pub use targets::Target; pub use context::Context; pub use level::Level; pub use logger::Logger; /// A convenience module that can be used to include commonly used quil types. /// /// # Examples /// /// ```rust /// use quil::prelude::*; /// ``` pub mod prelude { pub use targets::{Console, JsonFile}; pub use level::Level::*; pub use context::Context; pub use logger::Logger; }