Skip to content

Commit 3ef6995

Browse files
committed
refactor: update rotation policy for logger
1 parent eaa23f5 commit 3ef6995

File tree

2 files changed

+22
-46
lines changed

2 files changed

+22
-46
lines changed

src/config.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,6 @@ impl Config {
206206
.unwrap_or_else(GeneralConfig::default_bell)
207207
}
208208

209-
#[allow(dead_code)]
210209
pub fn save_log_count(&self) -> usize {
211210
self.general
212211
.as_ref()

src/main.rs

Lines changed: 22 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
use std::env::{self, args};
22
use std::ffi::CString;
3-
use std::fs::create_dir_all;
43
use std::io::{self, IsTerminal, stderr, stdin};
54
use std::path::{Path, PathBuf};
65

76
use std::process::{Command, exit};
87

98
use std::sync::Arc;
109
use std::sync::{LazyLock, OnceLock};
11-
use std::time::{Duration, SystemTime, UNIX_EPOCH};
10+
use std::time::Duration;
1211

1312
mod args;
1413
mod config;
@@ -240,20 +239,21 @@ fn init_localizer() {
240239

241240
fn init_logger(
242241
oma: &OhManagerAilurus,
243-
_config: &Config,
242+
config: &Config,
244243
) -> (Option<Arc<Logger>>, anyhow::Result<String>) {
245244
let debug = oma.global.debug;
246245
let dry_run = oma.global.dry_run;
247246

248-
let log_dir = if is_root() {
247+
let log_file = (if is_root() {
249248
PathBuf::from("/var/log/oma")
250249
} else {
251250
dirs::state_dir()
252251
.expect("Failed to get state dir")
253252
.join("oma")
254-
};
255-
256-
let log_file = create_log_file(&log_dir);
253+
})
254+
.join("oma.log")
255+
.to_string_lossy()
256+
.to_string();
257257

258258
let (level_filter, formatter) = if !debug && !dry_run {
259259
let level_filter = LevelFilter::MoreSevereEqual(Level::Info);
@@ -272,24 +272,20 @@ fn init_logger(
272272
(level_filter, formatter)
273273
};
274274

275-
let rotating_sink = if let Ok(log_file) = &log_file {
276-
Some(
277-
AsyncPoolSink::builder()
278-
.sink(Arc::new(
279-
RotatingFileSink::builder()
280-
.base_path(&log_file)
281-
.formatter(formatter.clone())
282-
.rotation_policy(RotationPolicy::Hourly)
283-
.build()
284-
.unwrap(),
285-
))
286-
.overflow_policy(spdlog::sink::OverflowPolicy::DropIncoming)
275+
let rotating_sink = AsyncPoolSink::builder()
276+
.sink(Arc::new(
277+
RotatingFileSink::builder()
278+
.base_path(&log_file)
279+
.formatter(formatter.clone())
280+
// 10 MB
281+
.rotation_policy(RotationPolicy::FileSize(10 * 1024 * 1024))
282+
.max_files(config.save_log_count())
287283
.build()
288284
.unwrap(),
289-
)
290-
} else {
291-
None
292-
};
285+
))
286+
.overflow_policy(spdlog::sink::OverflowPolicy::DropIncoming)
287+
.build()
288+
.unwrap();
293289

294290
let stream_sink = StdStreamSink::builder()
295291
.formatter(formatter)
@@ -301,33 +297,14 @@ fn init_logger(
301297

302298
logger_builder
303299
.level_filter(level_filter)
304-
.sink(Arc::new(stream_sink));
305-
306-
if let Some(rotating_sink) = rotating_sink {
307-
logger_builder.sink(Arc::new(rotating_sink));
308-
}
300+
.sink(Arc::new(stream_sink))
301+
.sink(Arc::new(rotating_sink));
309302

310303
let logger = logger_builder.build().unwrap();
311304

312305
set_default_logger(Arc::new(logger));
313306

314-
(Some(default_logger()), log_file)
315-
}
316-
317-
fn create_log_file(log_dir: &Path) -> anyhow::Result<String> {
318-
create_dir_all(log_dir)?;
319-
320-
let log_file = format!(
321-
"oma.log.{}",
322-
SystemTime::now()
323-
.duration_since(UNIX_EPOCH)
324-
.unwrap()
325-
.as_secs()
326-
);
327-
328-
let log_file = log_dir.join(log_file).to_string_lossy().to_string();
329-
330-
Ok(log_file)
307+
(Some(default_logger()), Ok(log_file))
331308
}
332309

333310
#[inline]

0 commit comments

Comments
 (0)