跳转至

Log 配置

Log 初始化配置

    //开启 logger
    FTLoggerConfig *loggerConfig = [[FTLoggerConfig alloc]init];
    loggerConfig.enableCustomLog = YES;
    loggerConfig.enableLinkRumData = YES;
    loggerConfig.logLevelFilter = @[@(FTStatusError),@(FTStatusCritical)];
    loggerConfig.discardType = FTDiscardOldest;
    [[FTMobileAgent sharedInstance] startLoggerWithConfigOptions:loggerConfig];
    let loggerConfig = FTLoggerConfig()
    loggerConfig.enableCustomLog = true
    loggerConfig.enableLinkRumData = true
    loggerConfig.logLevelFilter = [NSNumber(value: FTLogStatus.statusError.rawValue),NSNumber(value: FTLogStatus.statusCritical.rawValue)] // loggerConfig.logLevelFilter = [2,3]
    loggerConfig.discardType = .discardOldest
    FTMobileAgent.sharedInstance().startLogger(withConfigOptions: loggerConfig)
属性 类型 必须 含义
samplerate int 采样率。取值范围 [0,100],0 表示不采集,100 表示全采集,默认值为 100
enableCustomLog BOOL 是否上传自定义 log。默认 NO
printCustomLogToConsole BOOL 设置是否将自定义日志输出到控制台。默认 NO,自定义日志 输出格式
logLevelFilter NSArray 设置等级日志过滤,默认不设置。例:1. 采集日志等级为 Info 与 Error 的日志则设置为 @[@(FTStatusInfo),@(FTStatusError)]@[@0,@1];2. 采集日志等级包含自定义等级,如采集 "customLevel" 与 Error 则设置为 @[@"customLevel",@(FTStatusError)]。SDK 1.5.16 以上版本支持过滤自定义等级
enableLinkRumData BOOL 是否与 RUM 数据关联。默认 NO
globalContext NSDictionary 添加 log 自定义标签。添加规则请查阅 此处
logCacheLimitCount int 本地缓存最大日志条目数量限制 [1000,),日志越大,代表磁盘缓存压力越大,默认 5000
discardType FTLogCacheDiscard 设置日志达到限制上限以后的日志丢弃规则。默认 FTDiscardFTDiscard 当日志数据数量大于最大值(5000)时,丢弃追加数据;FTDiscardOldest 当日志数据大于最大值时,丢弃老数据

Logger 日志打印

在 SDK 初始化 Log 配置 时,配置 enableCustomLog 允许自定义添加日志。

目前日志内容限制为 30 KB,字符超出部分会进行截断处理。

使用方法

//
//  FTLogger.h
//  FTMobileSDK

/// 添加 info 等级自定义日志
/// - Parameters:
///   - content: 日志内容
///   - property: 自定义属性(可选)
-(void)info:(NSString *)content property:(nullable NSDictionary *)property;

/// 添加 warning 等级自定义日志
/// - Parameters:
///   - content: 日志内容
///   - property: 自定义属性(可选)
-(void)warning:(NSString *)content property:(nullable NSDictionary *)property;

/// 添加 error 等级自定义日志
/// - Parameters:
///   - content: 日志内容
///   - property: 自定义属性(可选)
-(void)error:(NSString *)content  property:(nullable NSDictionary *)property;

/// 添加 critical 等级自定义日志
/// - Parameters:
///   - content: 日志内容
///   - property: 自定义属性(可选)
-(void)critical:(NSString *)content property:(nullable NSDictionary *)property;

/// 添加 ok 等级自定义日志
/// - Parameters:
///   - content: 日志内容
///   - property: 自定义属性(可选)
-(void)ok:(NSString *)content property:(nullable NSDictionary *)property;

/// 添加自定义日志
/// - Parameters:
///   - content: 日志内容
///   - status: 日志状态等级
///   - property: 自定义属性(可选)
- (void)log:(NSString *)content status:(NSString *)status property:(nullable NSDictionary *)property;
open class FTLogger : NSObject, FTLoggerProtocol {}
public protocol FTLoggerProtocol : NSObjectProtocol {
/// 添加 info 等级自定义日志
/// - Parameters:
///   - content: 日志内容
///   - property: 自定义属性(可选)
optional func info(_ content: String, property: [AnyHashable : Any]?)

/// 添加 warning 等级自定义日志
/// - Parameters:
///   - content: 日志内容
///   - property: 自定义属性(可选)
optional func warning(_ content: String, property: [AnyHashable : Any]?)

/// 添加 error 等级自定义日志
/// - Parameters:
///   - content: 日志内容
///   - property: 自定义属性(可选)
optional func error(_ content: String, property: [AnyHashable : Any]?)

/// 添加 critical 等级自定义日志
/// - Parameters:
///   - content: 日志内容
///   - property: 自定义属性(可选)
optional func critical(_ content: String, property: [AnyHashable : Any]?)

/// 添加 ok 等级自定义日志
/// - Parameters:
///   - content: 日志内容
///   - property: 自定义属性(可选)
optional func ok(_ content: String, property: [AnyHashable : Any]?)

/// 添加自定义日志
/// - Parameters:
///   - content: 日志内容
///   - status: 日志状态等级
///   - property: 自定义属性(可选)
optional func log(_ content: String, status: String, property: [AnyHashable : Any]?)
}

日志等级

///事件等级和状态,默认:FTStatusInfo
typedef NS_ENUM(NSInteger, FTLogStatus) {
    /// 提示
    FTStatusInfo         = 0,
    /// 警告
    FTStatusWarning,
    /// 错误
    FTStatusError,
    /// 严重
    FTStatusCritical,
    /// 恢复
    FTStatusOk,
};
///事件等级和状态,默认:FTStatusInfo
public enum FTLogStatus : Int, @unchecked Sendable {
    /// 提示
    case statusInfo = 0
    /// 警告
    case statusWarning = 1
    /// 错误
    case statusError = 2
    /// 严重
    case statusCritical = 3
    /// 恢复
    case statusOk = 4
}

代码示例

// SDK 如果没有初始化成功,添加自定义日志会失败
[[FTLogger sharedInstance] info:@"test" property:@{@"custom_key":@"custom_value"}];
// SDK 如果没有初始化成功,添加自定义日志会失败
FTLogger.shared().info("contentStr", property: ["custom_key":"custom_value"])

自定义日志输出到控制台

设置 printCustomLogToConsole = YES,开启将自定义日志输出到控制台,将会在 Xcode 调试控制台看到以下格式的日志:

2023-06-29 13:47:56.960021+0800 App[64731:44595791] [IOS APP] [INFO] content ,{K=V,...,Kn=Vn}

2023-06-29 13:47:56.960021+0800 App[64731:44595791]:os_log 日志输出的标准前缀;

[IOS APP]:用来区分 SDK 输出自定义日志的前缀;

[INFO]:自定义日志的等级;

content:自定义日志内容;

{K=V,...,Kn=Vn}:自定义属性。

文档评价

文档内容是否对您有帮助? ×