Skip to content

Commit 44be96c

Browse files
committed
refactor: optimize log string alloc & pass record fields directly to log macros
1 parent e666f4e commit 44be96c

File tree

1 file changed

+31
-16
lines changed

1 file changed

+31
-16
lines changed

src/logger.rs

Lines changed: 31 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -106,21 +106,21 @@ pub(crate) enum Writer {
106106

107107
impl LogWriter for Writer {
108108
fn log(&self, record: LogRecord) {
109-
let log = format!(
110-
"{} {:<5} [{}:{}] {}\n",
111-
Utc::now().format("%Y-%m-%d %H:%M:%S"),
112-
record.level.to_string(),
113-
record.module_path,
114-
record.line,
115-
record.args
116-
);
117-
118109
match self {
119110
Writer::FileWriter { file_path, level } => {
120111
if record.level < *level {
121112
return;
122113
}
123114

115+
let log = format!(
116+
"{} {:<5} [{}:{}] {}\n",
117+
Utc::now().format("%Y-%m-%d %H:%M:%S"),
118+
record.level.to_string(),
119+
record.module_path,
120+
record.line,
121+
record.args
122+
);
123+
124124
fs::OpenOptions::new()
125125
.create(true)
126126
.append(true)
@@ -129,13 +129,28 @@ impl LogWriter for Writer {
129129
.write_all(log.as_bytes())
130130
.expect("Failed to write to log file")
131131
},
132-
Writer::LogFacadeWriter { level } => match level {
133-
LogLevel::Gossip => trace!("{}", log),
134-
LogLevel::Trace => trace!("{}", log),
135-
LogLevel::Debug => debug!("{}", log),
136-
LogLevel::Info => info!("{}", log),
137-
LogLevel::Warn => warn!("{}", log),
138-
LogLevel::Error => error!("{}", log),
132+
Writer::LogFacadeWriter { level } => {
133+
macro_rules! log_with_level {
134+
($log_level:expr, $($args:tt)*) => {
135+
match $log_level {
136+
LogLevel::Gossip | LogLevel::Trace => trace!($($args)*),
137+
LogLevel::Debug => debug!($($args)*),
138+
LogLevel::Info => info!($($args)*),
139+
LogLevel::Warn => warn!($($args)*),
140+
LogLevel::Error => error!($($args)*),
141+
}
142+
};
143+
}
144+
145+
log_with_level!(
146+
level,
147+
"{} {:<5} [{}:{}] {}",
148+
Utc::now().format("%Y-%m-%d %H:%M:%S"),
149+
record.level,
150+
record.module_path,
151+
record.line,
152+
record.args
153+
)
139154
},
140155
Writer::CustomWriter(custom_logger) => custom_logger.log(record),
141156
}

0 commit comments

Comments
 (0)