Skip to content

Commit

Permalink
feat(logging): enable lightweight env_logger automatically
Browse files Browse the repository at this point in the history
  • Loading branch information
kanru committed Mar 23, 2024
1 parent 0f10056 commit 3086224
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 3 deletions.
22 changes: 21 additions & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ include = ["src/**/*.rs", "data/*", "Cargo.toml", "AUTHORS", "COPYING", "NEWS"]
[dependencies]
cdb2 = "0.7.0"
directories = "5.0.0"
env_logger = { version = "0.11.3", default-features = false, optional = true }
log = "0.4.21"
riff = "2.0.0"
rusqlite = { version = "0.30.0", optional = true }
Expand All @@ -24,7 +25,7 @@ crate-type = ["rlib", "staticlib"]

[features]
default = []
capi = []
capi = ["dep:env_logger"]
sqlite = ["dep:rusqlite"]

[dev-dependencies]
Expand Down
13 changes: 12 additions & 1 deletion src/capi/logger.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,22 @@ type ExternLoggerFn =
unsafe extern "C" fn(data: *mut c_void, level: c_int, fmt: *const c_char, arg: ...);

pub(crate) struct ChewingLogger {
env_logger: Mutex<Option<env_logger::Logger>>,
logger: Mutex<Option<(ExternLoggerFn, AtomicPtr<c_void>)>>,
}

impl ChewingLogger {
pub(crate) const fn new() -> ChewingLogger {
ChewingLogger {
env_logger: Mutex::new(None),

Check warning on line 26 in src/capi/logger.rs

View check run for this annotation

Codecov / codecov/patch

src/capi/logger.rs#L24-L26

Added lines #L24 - L26 were not covered by tests
logger: Mutex::new(None),
}
}
pub(crate) fn init(&self) {}
pub(crate) fn init(&self) {
if let Ok(mut prev) = self.env_logger.lock() {
*prev = Some(env_logger::Logger::from_default_env());
}
}
pub(crate) fn set(&self, logger: Option<(ExternLoggerFn, *mut c_void)>) {
if let Ok(mut prev) = self.logger.lock() {
*prev = logger.map(|(l, d)| (l, d.into()));
Expand Down Expand Up @@ -60,6 +66,11 @@ impl Log for ChewingLogger {
return;
}
}

Check warning on line 68 in src/capi/logger.rs

View check run for this annotation

Codecov / codecov/patch

src/capi/logger.rs#L68

Added line #L68 was not covered by tests
if let Ok(logger) = self.env_logger.lock() {
if let Some(el) = logger.as_ref() {
el.log(record);
}
}
}

fn flush(&self) {}
Expand Down

0 comments on commit 3086224

Please sign in to comment.