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
//! A simple logger that prints to Godot's output window
//!
//! [godot-logger] is a simple logger that prints log messages to the output console inside the
//! [Godot] game engine. It is built around the logging facade of the [log] crate, and uses the
//! [`godot_print!`] macro from the [gdnative] bindings.
//!
//! It is possible to configure different log levels for different Rust modules, similar to other
//! popular logging frameworks such as [env_logger] or [log4rs]. Simply provide a list as the second
//! argument to the `init` function with module names and log levels.
//!
//! # Use
//!
//! Add [godot-logger] and [log] as dependencies to `Cargo.toml`.
//!
//! Then initialize [godot-logger] in the `init` function that is exported by `gdnative`. Pass in a
//! default log level, and a list with module-level overrides (can be empty).
//!
//! ```
//! use gdnative::prelude::*;
//! use godot_logger::GodotLogger;
//! use log::{Level, LevelFilter};
//!
//! fn init(handle: InitHandle) {
//! GodotLogger::builder()
//! .default_log_level(Level::Info)
//! .add_filter("godot_logger", LevelFilter::Debug)
//! .init();
//! log::debug!("Initialized the logger");
//! }
//!
//! godot_init!(init);
//! ```
//!
//! The following will appear in the _Output_ console inside Godot:
//!
//! ```text
//! 2021-09-25 19:29:25 DEBUG godot_logger Initialized the logger
//! ```
//!
//! [env_logger]: https://crates.io/crates/env_logger
//! [gdnative]: https://crates.io/crates/gdnative
//! [godot-logger]: https://crates.io/crates/godot-logger
//! [`godot_print!`]: https://docs.rs/gdnative/latest/gdnative/macro.godot_print.html
//! [log]: https://crates.io/crates/log
//! [log4rs]: https://crates.io/crates/log4rs
//! [Godot]: https://godotengine.org/
pub use crate*;
/// A logger that prints to the output console of the Godot game engine
///
/// `GodotLogger` is a logger implementation that prints log records to the output console inside
/// the Godot game engine. The log level can be set per Rust module, similar to other logging
/// frameworks in Rust.
///
/// The recommended way to initialize the logger is by using the crate's [`Builder`]. Its setters
/// can be used to configure the logger and overwrite the default configuration.
///
/// # Examples
///
/// ```
/// use godot_logger::GodotLogger;
/// use log::{Level, LevelFilter};
///
/// // Configure and initialize the logger
/// GodotLogger::builder()
/// .default_log_level(Level::Debug)
/// .add_filter("godot-logger", LevelFilter::Warn)
/// .init();
/// ```
;