package com.narutohuo.xindazhou.core.log.impl

import com.narutohuo.xindazhou.core.log.ILogger
import com.narutohuo.xindazhou.core.log.LogLevel

/**
 * 空日志实现（用于生产环境）
 * 
 * 所有日志方法都是空操作，不会输出任何日志
 * 用于生产环境，避免日志输出影响性能
 * 
 * 使用方式：
 * ```kotlin
 * // 在 Application 中初始化（生产环境）
 * ILog.init(NoOpLog.getInstance())
 * ```
 */
class NoOpLog private constructor() : ILogger {
    
    companion object {
        @Volatile
        private var INSTANCE: NoOpLog? = null
        
        /**
         * 获取单例实例
         */
        @JvmStatic
        fun getInstance(): ILogger {
            return INSTANCE ?: synchronized(this) {
                INSTANCE ?: NoOpLog().also { INSTANCE = it }
            }
        }
    }
    
    override fun d(tag: String, message: String) {
        // 空操作，不输出日志
    }
    
    override fun i(tag: String, message: String) {
        // 空操作，不输出日志
    }
    
    override fun w(tag: String, message: String) {
        // 空操作，不输出日志
    }
    
    override fun e(tag: String, message: String, throwable: Throwable?) {
        // 空操作，不输出日志
        // 注意：生产环境可能仍然需要收集错误，可以在这里扩展
    }
    
    override fun log(level: LogLevel, tag: String, message: String, throwable: Throwable?) {
        // 空操作，不输出日志
    }
    
    override fun uploadLogs() {
        // 空操作
    }
    
    override fun collectCrash(throwable: Throwable) {
        // 空操作
        // 注意：生产环境可能仍然需要收集崩溃信息，可以在这里扩展
        // 例如：上传到崩溃收集服务（Firebase Crashlytics、Bugly 等）
    }
}

