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;