Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 273b79b

Browse files
dbglogger with rwlock and config
1 parent 9263ed6 commit 273b79b

File tree

1 file changed

+25
-5
lines changed

1 file changed

+25
-5
lines changed

‎pirt/src/logging.rs‎

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use crate::procenv;
33
use std::fmt::Display;
44
use std::os::windows::ffi::OsStrExt;
55
use std::ffi::OsStr;
6-
use std::sync::RwLock;
6+
use std::sync::{RwLock,RwLockReadGuard};
77
use std::process;
88
use std::env;
99

@@ -52,22 +52,33 @@ fn log_dbg(msg: impl Display, level: Level) {
5252
}
5353

5454
pub(crate) struct FileLogCfg {
55-
55+
level:Level
5656
}
5757

5858
pub(crate) struct DbgLogCfg {
59-
59+
level:Level
6060
}
6161

6262
pub(crate) struct LoggingCfg {
63-
level: Level
63+
level: Level,
64+
dbg: DbgLogCfg,
65+
file: FileLogCfg
6466
}
6567

6668
#[derive(Default)]
6769
struct PirtLogger {
6870
cfg: RwLock<Option<LoggingCfg>>
6971
}
7072

73+
impl PirtLogger {
74+
fn cfg(&self) -> RwLockReadGuard<Option<LoggingCfg>> {
75+
self.cfg.read().unwrap_or_else(|_| {
76+
log_dbg("logging lock is poisoned, check logs for further errors", Level::Error);
77+
panic!("logging lock is poisoned, check logs for further errors");
78+
})
79+
}
80+
}
81+
7182
impl Log for PirtLogger {
7283
fn enabled(&self, metadata: &log::Metadata) -> bool {
7384
match self.cfg.read() {
@@ -84,7 +95,16 @@ impl Log for PirtLogger {
8495
}
8596

8697
fn log(&self, record: &log::Record) {
87-
todo!()
98+
if let Some(lock) = &*self.cfg() {
99+
if lock.dbg.level >= record.level() {
100+
log_dbg(record.args(), record.level());
101+
}
102+
103+
if lock.file.level >= record.level() {
104+
todo!();
105+
}
106+
}
107+
else { log_dbg(record.args(), record.level()); }
88108
}
89109

90110
fn flush(&self) {

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /