1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
use std::ops::Deref;
use log::{debug, error, info, trace, warn, LevelFilter};
use std::fmt::{Debug, Display};
pub trait LogPlugin: Send + Sync + Debug {
fn name(&self) -> &str {
std::any::type_name::<Self>()
}
fn get_level_filter(&self) -> &LevelFilter;
fn is_enable(&self) -> bool {
return !self.get_level_filter().eq(&log::LevelFilter::Off);
}
fn do_log(&self, context_id: &str, data: &str) {
match self.get_level_filter() {
log::LevelFilter::Error => {
self.error(context_id, data);
}
log::LevelFilter::Warn => {
self.warn(context_id, data);
}
log::LevelFilter::Info => {
self.info(context_id, data);
}
log::LevelFilter::Debug => {
self.debug(context_id, data);
}
log::LevelFilter::Trace => {
self.trace(context_id, data);
}
log::LevelFilter::Off => {}
}
}
fn error(&self, context_id: &str, data: &str) {
let filter = self.get_level_filter();
if filter.eq(&LevelFilter::Off) {
return;
}
if filter.ge(&LevelFilter::Error) {
error!("[rbatis] [{}] {}", context_id, data);
}
}
fn warn(&self, context_id: &str, data: &str) {
let filter = self.get_level_filter();
if filter.eq(&LevelFilter::Off) {
return;
}
if filter.ge(&LevelFilter::Warn) {
warn!("[rbatis] [{}] {}", context_id, data);
}
}
fn info(&self, context_id: &str, data: &str) {
let filter = self.get_level_filter();
if filter.eq(&LevelFilter::Off) {
return;
}
if filter.ge(&LevelFilter::Info) {
info!("[rbatis] [{}] {}", context_id, data);
}
}
fn debug(&self, context_id: &str, data: &str) {
let filter = self.get_level_filter();
if filter.eq(&LevelFilter::Off) {
return;
}
if filter.ge(&LevelFilter::Debug) {
debug!("[rbatis] [{}] {}", context_id, data);
}
}
fn trace(&self, context_id: &str, data: &str) {
let filter = self.get_level_filter();
if filter.eq(&LevelFilter::Off) {
return;
}
if filter.ge(&LevelFilter::Trace) {
trace!("[rbatis] [{}] {}", context_id, data);
}
}
}
#[derive(Debug)]
pub struct RbatisLogPlugin {
pub level_filter: LevelFilter,
}
impl Default for RbatisLogPlugin {
fn default() -> Self {
Self {
level_filter: log::LevelFilter::Info,
}
}
}
impl LogPlugin for RbatisLogPlugin {
fn get_level_filter(&self) -> &LevelFilter {
&self.level_filter
}
}