Skip to main content

lotus_script/
log.rs

1//! Logging-Hilfsfunktionen für Scripts.
2//!
3//! Logging utilities for scripts.
4
5/// Log-Level für Script-Ausgaben.
6///
7/// Log level for script output.
8pub enum Level {
9    /// Debug-Ausgaben.
10    ///
11    /// Debug output.
12    Debug,
13    /// Informationsmeldungen.
14    ///
15    /// Informational messages.
16    Info,
17    /// Warnungen.
18    ///
19    /// Warnings.
20    Warn,
21    /// Fehlermeldungen.
22    ///
23    /// Error messages.
24    Error,
25}
26
27/// Schreibt eine Meldung mit dem angegebenen Level.
28/// Niedrigstufige Funktion — bevorzugt die Makros [`log!`], [`debug!`], [`info!`], [`warning!`] und [`error!`].
29///
30/// Writes a message with the given level.
31/// Low-level function; prefer the [`log!`], [`debug!`], [`info!`], [`warning!`], and [`error!`] macros.
32pub fn write(level: Level, message: impl AsRef<str>) {
33    let level = match level {
34        Level::Debug => 0,
35        Level::Info => 1,
36        Level::Warn => 2,
37        Level::Error => 3,
38    };
39
40    let message = FfiObject::new(&message.as_ref());
41    unsafe {
42        lotus_script_sys::log::write(level, message.packed());
43    }
44}
45
46/// Protokolliert eine Meldung mit dem angegebenen Level.
47///
48/// Logs a message with the given level.
49#[doc(hidden)]
50#[macro_export]
51macro_rules! log {
52    ($level:expr, $($arg:tt)*) => {
53        $crate::log::write($level, format!($($arg)*));
54    };
55}
56
57/// Protokolliert eine Debug-Meldung.
58///
59/// Logs a debug message.
60#[doc(hidden)]
61#[macro_export]
62macro_rules! debug {
63    ($($arg:tt)*) => {
64        log!($crate::log::Level::Debug, $($arg)*);
65    };
66}
67
68/// Protokolliert eine Info-Meldung.
69///
70/// Logs an info message.
71#[doc(hidden)]
72#[macro_export]
73macro_rules! info {
74    ($($arg:tt)*) => {
75        log!($crate::log::Level::Info, $($arg)*);
76    };
77}
78
79/// Protokolliert eine Warnmeldung.
80///
81/// Logs a warning message.
82#[doc(hidden)]
83#[macro_export]
84macro_rules! warning {
85    ($($arg:tt)*) => {
86        log!($crate::log::Level::Warn, $($arg)*);
87    };
88}
89
90/// Protokolliert eine Fehlermeldung.
91///
92/// Logs an error message.
93#[doc(hidden)]
94#[macro_export]
95macro_rules! error {
96    ($($arg:tt)*) => {
97        log!($crate::log::Level::Error, $($arg)*);
98    };
99}
100
101#[doc(inline)]
102pub use debug;
103#[doc(inline)]
104pub use error;
105#[doc(inline)]
106pub use info;
107#[doc(inline)]
108pub use log;
109use lotus_script_sys::FfiObject;
110#[doc(inline)]
111pub use warning;