package com.cloudflare.realtimekit;

import android.util.Log;

public class RTKLogger {
    private static final String BASE_TAG = "RealtimeKit";
    private static boolean isEnabled = false;

    /**
     * Enable logging for RealtimeKit module
     */
    public static void enable() {
        isEnabled = true;
        Log.i(BASE_TAG, "RealtimeKit logging enabled");
    }

    /**
     * Disable logging for RealtimeKit module
     */
    public static void disable() {
        isEnabled = false;
        Log.i(BASE_TAG, "RealtimeKit logging disabled");
    }

    /**
     * Check if logging is enabled
     */
    public static boolean isEnabled() {
        return isEnabled;
    }

    /**
     * Log debug message
     */
    public static void d(String message) {
        if (isEnabled) {
            Log.d(BASE_TAG, message);
        }
    }

    /**
     * Log debug message with tag suffix
     */
    public static void d(String tagSuffix, String message) {
        if (isEnabled) {
            Log.d(BASE_TAG + ":" + tagSuffix, message);
        }
    }

    /**
     * Log info message
     */
    public static void i(String message) {
        if (isEnabled) {
            Log.i(BASE_TAG, message);
        }
    }

    /**
     * Log info message with tag suffix
     */
    public static void i(String tagSuffix, String message) {
        if (isEnabled) {
            Log.i(BASE_TAG + ":" + tagSuffix, message);
        }
    }

    /**
     * Log warning message (always logged regardless of isEnabled)
     */
    public static void w(String message) {
        Log.w(BASE_TAG, message);
    }

    /**
     * Log warning message with tag suffix (always logged)
     */
    public static void w(String tagSuffix, String message) {
        Log.w(BASE_TAG + ":" + tagSuffix, message);
    }

    /**
     * Log error message (always logged regardless of isEnabled)
     */
    public static void e(String message) {
        Log.e(BASE_TAG, message);
    }

    /**
     * Log error message with tag suffix (always logged)
     */
    public static void e(String tagSuffix, String message) {
        Log.e(BASE_TAG + ":" + tagSuffix, message);
    }

    /**
     * Log error message with exception (always logged)
     */
    public static void e(String message, Throwable throwable) {
        Log.e(BASE_TAG, message, throwable);
    }

    /**
     * Log error message with tag suffix and exception (always logged)
     */
    public static void e(String tagSuffix, String message, Throwable throwable) {
        Log.e(BASE_TAG + ":" + tagSuffix, message, throwable);
    }

    /**
     * Format a message with arguments
     */
    public static String format(String format, Object... args) {
        return String.format(format, args);
    }
}
