Logger

Struct Logger 

Source
pub struct Logger { /* private fields */ }
Expand description

日志记录器结构体

Implementations§

Source§

impl Logger

Source

pub const fn new(module_path: &'static str, log_level: LogLevel) -> Self

初始化日志记录器实例

  • 创建一个新的日志记录器实例,指定模块路径和日志级别。
  • 此方法仅创建实例,要启用全局日志系统需要调用 Logger::init 方法。
  • 可用于设置单独某个模块的日志级别
§参数
  • module_path: 当前模块的路径标识,用于日志记录中的来源标识
  • log_level: 日志记录器的过滤级别
§返回值
  • Logger: 初始化完成的日志记录器实例
§示例
let log = yan_log::Logger::new(module_path!(), yan_log::LogLevel::Debug);
log.debug("Debug information");
yan_log::Logger::shutdown();
Source

pub fn init(dir_path: &str, level: LogLevel) -> LoggerFormat

初始化全局日志系统

  • 搭配 log 日志门面框架使用
  • 设置日志发送器和全局日志级别,使日志系统开始工作
  • 此方法只需在应用程序启动时调用一次
§参数
  • dir_path: 日志文件存储目录路径
  • level: 全局日志级别过滤设置
§注意事项
  • 必须在创建任何日志记录器实例之前调用
  • 如果未调用此方法,日志将无法正常记录
  • 设置全局日志级别会影响所有日志记录器
§示例
yan_log::Logger::init("logs", yan_log::LogLevel::Debug)
    .start()
    .unwrap();
log::info!("Application started");
yan_log::Logger::shutdown();
Source

pub fn shutdown()

关闭日志系统并等待日志线程结束

  • 优雅地关闭日志系统,发送关闭信号给日志线程并等待其完成。
  • 建议在应用程序主线程结束前调用此方法以确保所有日志都被处理。
§注意事项
  • 调用此方法后,日志系统将无法继续使用
  • 会阻塞当前线程直到日志线程完全退出
  • 如果不调用此方法,日志线程可能无法正常退出
§示例
fn main(){
   // 应用程序运行期间...

   // 在应用程序退出前执行shutdown,确保日志正常记录
   yan_log::Logger::shutdown();
}
Source

pub fn info<T: Into<String>>(&self, message: T)

记录信息级别日志

§参数
  • message: 日志消息内容,可以是任何能转换为字符串的类型
§示例
let log = yan_log::Logger::new(module_path!(), yan_log::LogLevel::Debug);
log.info("应用程序启动完成");
Source

pub fn debug<T: Into<String>>(&self, message: T)

记录调试级别日志

§参数
  • message: 调试日志消息内容
§示例
let log = yan_log::Logger::new(module_path!(), yan_log::LogLevel::Debug);
log.debug("进入数据处理函数");
Source

pub fn warn<T: Into<String>>(&self, message: T)

记录警告级别日志

§参数
  • message: 调试日志消息内容
§示例
let log = yan_log::Logger::new(module_path!(), yan_log::LogLevel::Debug);
log.warn("磁盘空间不足");
Source

pub fn error<T: Into<String>>(&self, message: T)

记录错误级别日志

§参数
  • message: 错误日志消息内容
§示例

let log = yan_log::Logger::new(module_path!(), yan_log::LogLevel::Debug);
log.error("数据库连接失败");
Source

pub fn trace<T: Into<String>>(&self, message: T)

记录跟踪级别日志

§参数
  • message: 跟踪日志消息内容
§示例
let log = yan_log::Logger::new(module_path!(), yan_log::LogLevel::Debug);
log.trace("函数内部变量值: x = 42");

Trait Implementations§

Source§

impl Log for Logger

Source§

fn enabled(&self, metadata: &Metadata<'_>) -> bool

检查是否启用指定级别的日志记录

  • 根据当前日志记录器配置的日志级别,判断是否应该记录给定元数据对应的日志。
§参数
  • metadata: 日志元数据,包含日志级别和目标信息
§返回值
  • bool: 是否启用该级别日志的记录
    • true: 日志级别在当前配置级别范围内,允许记录
    • false: 日志级别低于当前配置级别,不记录
Source§

fn log(&self, record: &Record<'_>)

记录日志消息

  • 实现 log::Log trait的核心方法,将标准log记录转换为内部日志格式并发送到日志线程。
  • 此方法由log门面自动调用,通常不应直接调用。
§参数
  • record: 日志记录,包含级别、消息、模块路径等信息
§处理流程
  1. 将log::Level转换为内部LogLevel
  2. 提取模块路径或使用默认值
  3. 获取发送器锁并发送日志消息
§错误处理
  • 如果日志发送失败,会将错误信息打印到标准错误记录
  • 如果日志系统未初始化,消息会被静默丢弃
§注意事项
  • 此方法会在日志记录时获取全局锁,可能影响性能
  • 在性能敏感的场景中应谨慎使用高频率日志
Source§

fn flush(&self)

刷新日志缓冲区

  • 实现 log::Log trait的要求方法,确保所有缓冲的日志消息被写入目标。
  • 在当前实现中,由于使用通道异步处理,此方法为空实现。
§说明
  • 当前日志系统使用通道进行异步日志处理,不需要手动刷新
  • 如果需要确保日志立即写入,请考虑使用同步日志实现
  • 此方法为满足trait要求而存在,实际不执行任何操作

Auto Trait Implementations§

§

impl Freeze for Logger

§

impl RefUnwindSafe for Logger

§

impl Send for Logger

§

impl Sync for Logger

§

impl Unpin for Logger

§

impl UnwindSafe for Logger

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.