//! Logging // NB: transitionary, de-mode-ing. #[forbid(deprecated_mode)]; #[forbid(deprecated_pattern)]; use cast::transmute; #[nolink] extern mod rustrt { fn rust_log_console_on(); fn rust_log_console_off(); fn rust_log_str(level: u32, string: *libc::c_char, size: libc::size_t); } /// Turns on logging to stdout globally pub fn console_on() { rustrt::rust_log_console_on(); } /** * Turns off logging to stdout globally * * Turns off the console unless the user has overridden the * runtime environment's logging spec, e.g. by setting * the RUST_LOG environment variable */ pub fn console_off() { rustrt::rust_log_console_off(); } #[cfg(notest)] #[lang="log_type"] pub fn log_type(level: u32, object: &T) { let bytes = do io::with_bytes_writer() |writer| { repr::write_repr(writer, object); }; unsafe { let len = bytes.len() as libc::size_t; rustrt::rust_log_str(level, transmute(vec::raw::to_ptr(bytes)), len); } }