//
//  PDNSCurlLogger.h
//  PDNSCurl
//

#ifndef PDNSCurlLogger_h
#define PDNSCurlLogger_h

#import <Foundation/Foundation.h>
#import "PDNSCurlProtocol.h"

NS_ASSUME_NONNULL_BEGIN


@interface PDNSCurlLogger : NSObject

// 获取共享实例
+ (instancetype)sharedLogger;

// 设置全局日志级别
+ (void)setLogLevel:(PDNSCurlLogLevel)level;

// 获取当前日志级别
+ (PDNSCurlLogLevel)currentLogLevel;

@end

// 便捷的日志记录宏 - 使用全局函数避免宏参数问题
#define PDNS_LOG_ERROR(component, format, ...) \
    PDNSCurlLog(PDNSCurlLogLevelError, component, format, ##__VA_ARGS__)

#define PDNS_LOG_INFO(component, format, ...) \
    PDNSCurlLog(PDNSCurlLogLevelInfo, component, format, ##__VA_ARGS__)

#define PDNS_LOG_DEBUG(component, format, ...) \
    PDNSCurlLog(PDNSCurlLogLevelDebug, component, format, ##__VA_ARGS__)

// 内部使用的函数声明，供宏调用
void PDNSCurlLog(PDNSCurlLogLevel level, NSString *component, NSString *format, ...);

NS_ASSUME_NONNULL_END

#endif /* PDNSCurlLogger_h */
