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 | 否 | 设置日志达到限制上限以后的日志丢弃规则。默认 FTDiscard。FTDiscard 当日志数据数量大于最大值(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]?)
}
日志等级¶
代码示例¶
自定义日志输出到控制台¶
设置 printCustomLogToConsole = YES,开启将自定义日志输出到控制台,将会在 Xcode 调试控制台看到以下格式的日志:
2023-06-29 13:47:56.960021+0800 App[64731:44595791]:os_log 日志输出的标准前缀;
[IOS APP]:用来区分 SDK 输出自定义日志的前缀;
[INFO]:自定义日志的等级;
content:自定义日志内容;
{K=V,...,Kn=Vn}:自定义属性。