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
/*
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under both the MIT license found in the
 * LICENSE-MIT file in the root directory of this source tree and the Apache
 * License, Version 2.0 found in the LICENSE-APACHE file in the root directory
 * of this source tree.
 */

//! # A slog `Drain` for glog-formatted  logs.
//!
//! ## Usage
//!
//! For simple programs where you need glog-formatted logs to standard error, use the `logger`
//! convenience function to create your logger:
//!
//! ```
//! use slog::info;
//!
//! fn main() {
//!     let log = slog_glog_fmt::facebook_logger().unwrap();
//!     info!(log, "glog-formatted logs available");
//! }
//! ```
//!
//! For more complicated scenarios, create a `GlogFormat` instance using a normal slog-term
//! decorator, and use that to construct the root `Logger` instance.  You can combine the
//! `GlogFormat` drain with other drains in the usual way. The `KVCategorizer` controls how the KV
//! values should be printed.
//!
//! ```
//! use std::sync::Mutex;
//! use slog::{debug, o, Drain, Logger};
//! use slog_glog_fmt::kv_categorizer::InlineCategorizer;
//!
//! pub fn main() {
//!     let decorator = slog_term::TermDecorator::new().build();
//!     let drain = slog_glog_fmt::GlogFormat::new(decorator, InlineCategorizer).fuse();
//!     let drain = Mutex::new(drain).fuse();
//!     let log = Logger::root(drain, o!());
//!     debug!(log, "Custom logger built.");
//! }
//! ```

#![deny(warnings, missing_docs, clippy::all, broken_intra_doc_links)]
#![allow(clippy::needless_doctest_main)]
pub mod collector_serializer;
mod glog_format;
pub mod kv_categorizer;
pub mod kv_defaults;

pub use crate::glog_format::{default_drain, facebook_logger, GlogFormat};