pub struct Log;
Expand description
A class for logging errors, warnings and information!
Different levels of information can be filtered out, and supports
coloration via <~colorCode
> and <~clr
> tags.
Text colors can be set with a tag, and reset back to default with
<~clr
>. Color codes are as follows:
Dark | Bright | Description |
---|---|---|
DARK | BRIGHT | DESCRIPTION |
blk | BLK | Black |
red | RED | Red |
grn | GRN | Green |
ylw | YLW | Yellow |
blu | BLU | Blue |
mag | MAG | Magenta |
cyn | cyn | Cyan |
grn | GRN | Green |
wht | WHT | White |
https://stereokit.net/Pages/StereoKit/Log.html
§Examples
use stereokit_rust::system::{Log, LogColors, LogLevel};
Log::colors(LogColors::Ansi);
Log::filter(LogLevel::Diagnostic);
Log::info("model <~GRN>node count<~clr> : <~RED>6589<~clr> !!!");
let value = 42;
Log::diag(format!("My value is {}", value));
Log::warn("This is not very good!");
Log::err("This is very bad!!!");
Log::write(LogLevel::Diagnostic, format!("Again, my value is {}", 2));
Implementations§
Source§impl Log
impl Log
Sourcepub fn filter(filter: LogLevel)
pub fn filter(filter: LogLevel)
What’s the lowest level of severity logs to display on the console? Default is LogLevel::Info. This property can safely be set before SK initialization. https://stereokit.net/Pages/StereoKit/Log.html
see also log_set_filter
§Examples
use stereokit_rust::system::{Log, LogLevel};
// Set the log filter to only show errors and above.
Log::filter(LogLevel::Error);
// Set the log filter to only show warnings and above (errors)
Log::filter(LogLevel::Warning);
// Set the log filter to only show infos and above (wanings and errors)
Log::filter(LogLevel::Inform);
// Set the log filter to show every logs
Log::filter(LogLevel::Diagnostic);
Sourcepub fn colors(colors: LogColors)
pub fn colors(colors: LogColors)
Set the colors https://stereokit.net/Pages/StereoKit/Log.html
see also log_set_colors
§Examples
use stereokit_rust::system::{Log, LogColors};
// Set the log colors to use ANSI color codes.
Log::colors(LogColors::Ansi);
// Set the log colors to use no color codes.
Log::colors(LogColors::None);
Sourcepub fn err<S: AsRef<str>>(text: S)
pub fn err<S: AsRef<str>>(text: S)
Writes a formatted line to the log using a LogLevel.Error severity level! https://stereokit.net/Pages/StereoKit/Log.html
see also log_err
§Examples
use stereokit_rust::system::Log;
Log::err("This is very bad!!!");
let value = 42;
Log::err(format!("My problematic value is {}", value));
Sourcepub fn info<S: AsRef<str>>(text: S)
pub fn info<S: AsRef<str>>(text: S)
Writes a formatted line to the log using a LogLevel.Inform severity level! https://stereokit.net/Pages/StereoKit/Log.html
see also log_info
§Examples
use stereokit_rust::system::Log;
Log::info("This is good!");
let value = 42;
Log::info(format!("My value is {}", value));
Sourcepub fn warn<S: AsRef<str>>(text: S)
pub fn warn<S: AsRef<str>>(text: S)
Writes a formatted line to the log using a LogLevel.Warning severity level! https://stereokit.net/Pages/StereoKit/Log.html
see also log_warn
§Examples
use stereokit_rust::system::Log;
Log::warn("This is not very good!");
let value = 42;
Log::warn(format!("My not so good value is {}", value));
Sourcepub fn diag<S: AsRef<str>>(text: S)
pub fn diag<S: AsRef<str>>(text: S)
Writes a formatted line to the log using a LogLevel.Diagnostic severity level! https://stereokit.net/Pages/StereoKit/Log.html
see also log_diag
§Examples
use stereokit_rust::system::Log;
Log::diag("This is something to check!");
let value = 42;
Log::diag(format!("My value to check is {}", value));
Sourcepub fn write<S: AsRef<str>>(level: LogLevel, text: S)
pub fn write<S: AsRef<str>>(level: LogLevel, text: S)
Writes a formatted line to the log with the specified severity level! https://stereokit.net/Pages/StereoKit/Log.html
see also log_write
§Examples
use stereokit_rust::system::{Log, LogLevel};
Log::write(LogLevel::Diagnostic, "This is something to check!!!");
let value = 42;
Log::write(LogLevel::Error, format!("My problematic value is {}", value));
Sourcepub fn subscribe<'a, F: FnMut(LogLevel, &str) + 'a>(on_log: F)
pub fn subscribe<'a, F: FnMut(LogLevel, &str) + 'a>(on_log: F)
Allows you to listen in on log events! Any callback subscribed here will be called when something is logged. This does honor the Log.Filter, so filtered logs will not be received here. This method can safely be called before SK initialization. https://stereokit.net/Pages/StereoKit/Log/Subscribe.html
see also log_subscribe
Log::unsubscribe
§Examples
use stereokit_rust::system::{Log, LogLevel, LogItem};
use std::sync::{Arc, Mutex};
/// Somewhere to copy the log
static LOG_LOG: Mutex<Vec<LogItem>> = Mutex::new(vec![]);
let fn_mut = |level: LogLevel, log_text: &str| {
let mut items = LOG_LOG.lock().unwrap();
items.push(LogItem { level, text: log_text.to_owned(), count: 1 });
};
Log::subscribe( fn_mut );
Log::info("This is an info message");
Log::warn("This is a warning message");
Log::err("This is an error message");
let messages = LOG_LOG.lock().unwrap();
assert_eq!(messages.len(), 3);
assert_eq!(messages[0].level, LogLevel::Inform);
assert_eq!(messages[1].text, "This is a warning message");
Log::unsubscribe( fn_mut );
Sourcepub fn unsubscribe<'a, F: FnMut(LogLevel, &str) + 'a>(on_log: F)
pub fn unsubscribe<'a, F: FnMut(LogLevel, &str) + 'a>(on_log: F)
If you subscribed to the log callback, you can unsubscribe that callback here! This method can safely be called before initialization. https://stereokit.net/Pages/StereoKit/Log/Unsubscribe.html
see also log_unsubscribe
see example in Log::subscribe
Auto Trait Implementations§
impl Freeze for Log
impl RefUnwindSafe for Log
impl Send for Log
impl Sync for Log
impl Unpin for Log
impl UnwindSafe for Log
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.