secra_logger/
config.rs

1use std::path::PathBuf;
2
3/// 日志格式
4#[derive(Debug, Clone, Copy, PartialEq, Eq)]
5pub enum LogFormat {
6    /// JSON 格式
7    Json,
8    /// 人类可读格式
9    Human,
10}
11
12/// 轮转策略
13#[derive(Debug, Clone, Copy, PartialEq, Eq)]
14pub enum RotationStrategy {
15    /// 按天轮转
16    Daily,
17    /// 按大小轮转(当前实现会降级为按小时轮转,避免不可用)
18    Size(usize),
19}
20
21/// 日志轮转配置
22#[derive(Debug, Clone)]
23pub struct LogRotationConfig {
24    /// 轮转策略
25    pub strategy: RotationStrategy,
26    /// 保留文件数量(当前 `tracing-appender` 不支持自动清理旧文件;保留字段用于兼容/未来扩展)
27    pub max_files: usize,
28}
29
30/// 日志配置
31#[derive(Debug, Clone)]
32pub struct LogConfig {
33    /// 日志级别(用于应用模式的 EnvFilter 默认 directive)
34    pub level: tracing::Level,
35
36    /// 是否启用控制台输出
37    pub console_output: bool,
38    /// 控制台输出格式
39    pub console_format: LogFormat,
40    /// 控制台是否启用颜色
41    pub console_colors: bool,
42    /// 控制台是否显示 target
43    pub console_show_target: bool,
44    /// 控制台是否显示文件
45    pub console_show_file: bool,
46    /// 控制台是否显示行号
47    pub console_show_line: bool,
48
49    /// 是否启用文件输出
50    pub file_output: bool,
51    /// 日志文件路径(目录 + 文件名基准;实际会由 appender 生成带日期/小时的文件)
52    pub log_file: Option<PathBuf>,
53    /// 文件输出格式
54    pub file_format: LogFormat,
55    /// 日志轮转配置
56    pub rotation: LogRotationConfig,
57}
58
59impl Default for LogRotationConfig {
60    fn default() -> Self {
61        Self {
62            strategy: RotationStrategy::Daily,
63            max_files: 7,
64        }
65    }
66}
67
68impl Default for LogConfig {
69    fn default() -> Self {
70        Self {
71            level: tracing::Level::INFO,
72            console_output: true,
73            console_format: LogFormat::Human,
74            console_colors: true,
75            console_show_target: true,
76            console_show_file: true,
77            console_show_line: true,
78            file_output: false,
79            log_file: None,
80            file_format: LogFormat::Json,
81            rotation: LogRotationConfig::default(),
82        }
83    }
84}