lotus_script/
log.rs

1//! Logging utilities.
2
3/// Log level
4pub enum Level {
5    Debug,
6    Info,
7    Warn,
8    Error,
9}
10
11/// Write a message with the given level. This is a low-level function, use the [log!], [debug!], [info!], [warning!], and [error!] macros instead.
12pub fn write(level: Level, message: impl AsRef<str>) {
13    let level = match level {
14        Level::Debug => 0,
15        Level::Info => 1,
16        Level::Warn => 2,
17        Level::Error => 3,
18    };
19
20    let message = FfiObject::new(&message.as_ref());
21    unsafe {
22        lotus_script_sys::log::write(level, message.packed());
23    }
24}
25
26/// Log a message with the given level.
27#[doc(hidden)]
28#[macro_export]
29macro_rules! log {
30    ($level:expr, $($arg:tt)*) => {
31        $crate::log::write($level, format!($($arg)*));
32    };
33}
34
35/// Log a debug message.
36#[doc(hidden)]
37#[macro_export]
38macro_rules! debug {
39    ($($arg:tt)*) => {
40        log!($crate::log::Level::Debug, $($arg)*);
41    };
42}
43
44/// Log a info message.
45#[doc(hidden)]
46#[macro_export]
47macro_rules! info {
48    ($($arg:tt)*) => {
49        log!($crate::log::Level::Info, $($arg)*);
50    };
51}
52
53/// Log a warning message.
54#[doc(hidden)]
55#[macro_export]
56macro_rules! warning {
57    ($($arg:tt)*) => {
58        log!($crate::log::Level::Warn, $($arg)*);
59    };
60}
61
62/// Log an error message.
63#[doc(hidden)]
64#[macro_export]
65macro_rules! error {
66    ($($arg:tt)*) => {
67        log!($crate::log::Level::Error, $($arg)*);
68    };
69}
70
71#[doc(inline)]
72pub use debug;
73#[doc(inline)]
74pub use error;
75#[doc(inline)]
76pub use info;
77#[doc(inline)]
78pub use log;
79use lotus_script_sys::FfiObject;
80#[doc(inline)]
81pub use warning;