扩展函数
日志
import org.slf4j.Logger
import org.slf4j.LoggerFactory
/**
* 日志扩展
*
* @author dream
* @version 1.0
* @since 2025/7/25 15:23
*/
/**
* 为任意对象提供一个日志记录器(Logger)实例。
* 通过该扩展属性,可以方便地获取与对象所属类相关联的日志记录器。
*
* @return 与当前对象所属类相关联的日志记录器实例。
*/
val <T : Any> T.log: Logger
get() = LoggerFactory.getLogger(this.javaClass)
/**
* 记录调试级别的日志信息。
* 如果调试级别的日志记录已启用,则执行给定的 lambda 表达式以获取日志消息并记录该消息。
*
* @param lazyMessage 一个 lambda 表达式,用于延迟计算日志消息。
*/
inline fun Logger.debug(lazyMessage: () -> String) {
if (isDebugEnabled) debug(lazyMessage())
}
/**
* 记录信息级别的日志。
* 该函数是内联函数,用于在记录日志时避免创建额外的对象。它接受一个lambda表达式作为消息,该消息仅在日志级别为INFO时才会被计算和记录。
*
* @param lazyMessage 一个lambda表达式,返回要记录的信息字符串。
*/
inline fun Logger.info(lazyMessage: () -> String) {
if (isInfoEnabled) info(lazyMessage())
}
/**
* 记录警告级别的日志信息。
* 如果警告级别的日志记录已启用,则执行给定的 lambda 表达式以获取日志消息并记录该消息。
*
* @param lazyMessage 一个 lambda 表达式,用于延迟计算日志消息。
*/
inline fun Logger.warn(lazyMessage: () -> String) {
if (isWarnEnabled) warn(lazyMessage())
}
/**
* 记录错误级别的日志信息。
* 如果错误级别的日志记录已启用,则执行给定的 lambda 表达式以获取日志消息并记录该消息。
*
* @param lazyMessage 一个 lambda 表达式,用于延迟计算日志消息。
*/
inline fun Logger.error(lazyMessage: () -> String) {
if (isErrorEnabled) error(lazyMessage())
}
/**
* 记录错误级别的日志信息,并附带异常信息。
* 如果错误级别的日志记录已启用,则执行给定的 lambda 表达式以获取日志消息并记录该消息和异常。
*
* @param throwable 要记录的异常。
* @param lazyMessage 一个 lambda 表达式,用于延迟计算日志消息。
*/
inline fun Logger.error(throwable: Throwable, lazyMessage: () -> String) {
if (isErrorEnabled) error(lazyMessage(), throwable)
}