package com.narutohuo.xindazhou.common.log

import com.narutohuo.xindazhou.core.log.ILog as CoreILog
import com.narutohuo.xindazhou.core.log.LogLevel

/**
 * 日志工具类封装
 * 
 * 业务层统一使用此类进行日志记录，不直接使用 base-core 的 ILog
 * 
 * **使用示例**：
 * ```kotlin
 * // 调试日志
 * LogHelper.d("Tag", "调试信息")
 * 
 * // 信息日志
 * LogHelper.i("Tag", "一般信息")
 * 
 * // 警告日志
 * LogHelper.w("Tag", "警告信息")
 * 
 * // 错误日志
 * LogHelper.e("Tag", "错误信息", exception)
 * 
 * // 上传日志文件
 * LogHelper.uploadLogs()
 * 
 * // 收集崩溃信息
 * LogHelper.collectCrash(throwable)
 * ```
 */
object LogHelper {
    /**
     * 初始化日志实现（在 Application 中调用，可选）
     * 
     * @param enableLogging 是否启用日志（默认 true）
     */
    @JvmStatic
    fun init(enableLogging: Boolean = true) {
        CoreILog.init(enableLogging = enableLogging)
    }
    
    /**
     * 调试日志
     * 
     * @param tag 标签
     * @param message 消息
     */
    @JvmStatic
    fun d(tag: String, message: String) {
        CoreILog.d(tag, message)
    }
    
    /**
     * 信息日志
     * 
     * @param tag 标签
     * @param message 消息
     */
    @JvmStatic
    fun i(tag: String, message: String) {
        CoreILog.i(tag, message)
    }
    
    /**
     * 警告日志
     * 
     * @param tag 标签
     * @param message 消息
     */
    @JvmStatic
    fun w(tag: String, message: String) {
        CoreILog.w(tag, message)
    }
    
    /**
     * 错误日志
     * 
     * @param tag 标签
     * @param message 消息
     * @param throwable 异常（可选）
     */
    @JvmStatic
    fun e(tag: String, message: String, throwable: Throwable? = null) {
        CoreILog.e(tag, message, throwable)
    }
    
    /**
     * 按级别记录日志
     * 
     * @param level 日志级别
     * @param tag 标签
     * @param message 消息
     * @param throwable 异常（可选）
     */
    @JvmStatic
    fun log(level: LogLevel, tag: String, message: String, throwable: Throwable? = null) {
        CoreILog.log(level, tag, message, throwable)
    }
    
    /**
     * 上传日志文件
     */
    @JvmStatic
    fun uploadLogs() {
        CoreILog.uploadLogs()
    }
    
    /**
     * 收集崩溃信息
     * 
     * @param throwable 异常
     */
    @JvmStatic
    fun collectCrash(throwable: Throwable) {
        CoreILog.collectCrash(throwable)
    }
}
