mirror of
https://github.com/logos-blockchain/logos-execution-zone.git
synced 2026-06-26 08:59:45 +00:00
33 lines
1020 B
Rust
33 lines
1020 B
Rust
use std::ffi::{CStr, c_char};
|
|
|
|
use log::LevelFilter;
|
|
|
|
/// Initializes logging for the indexer at `level`.
|
|
///
|
|
/// - `level` is a null-terminated string (`off`/`error`/`warn`/`info`/`debug`/ `trace`,
|
|
/// case-insensitive); null or unparseable falls back to `info`.
|
|
///
|
|
/// Only the `indexer_ffi` and `indexer_core` targets are enabled!
|
|
///
|
|
/// # Safety
|
|
/// - `level` must be a valid null-terminated C string, or null.
|
|
/// - First call to this function wins; subsequent calls are no-ops.
|
|
#[unsafe(no_mangle)]
|
|
pub unsafe extern "C" fn init_logger(level: *const c_char) {
|
|
let level = if level.is_null() {
|
|
LevelFilter::Info
|
|
} else {
|
|
unsafe { CStr::from_ptr(level) }
|
|
.to_str()
|
|
.ok()
|
|
.and_then(|s| s.parse().ok())
|
|
.unwrap_or(LevelFilter::Info)
|
|
};
|
|
|
|
let _dontcare = env_logger::Builder::new()
|
|
.filter_level(LevelFilter::Off)
|
|
.filter_module("indexer_ffi", level)
|
|
.filter_module("indexer_core", level)
|
|
.try_init();
|
|
}
|