콘텐츠로 이동

Log 설정

Log 초기화 설정

    // 로거 활성화
    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 아니요 사용자 정의 로그 업로드 여부. 기본값 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 아니요 로그 사용자 정의 태그 추가. 추가 규칙은 여기 참조
logCacheLimitCount int 아니요 로컬 캐시 최대 로그 항목 수 제한 [1000,), 로그가 많을수록 디스크 캐시 부하가 커짐, 기본값 5000
discardType FTLogCacheDiscard 아니요 로그가 제한上限에 도달한 후의 로그 폐기 규칙 설정. 기본값 FTDiscard. FTDiscard는 로그 데이터 수가 최대값(5000)보다 클 때 추가 데이터를 폐기; FTDiscardOldest는 로그 데이터가 최대값보다 클 때 오래된 데이터를 폐기
샘플링 비율 매개변수 명명

SDK 1.6.6及以上 버전에서는 samplerate가 폐기되었으며, 현재는 계속 사용할 수 있지만 sampleRate와 동일한 값에 매핑됩니다. 새 코드에서는 sampleRate 사용을 권장합니다. 1.6.6 미만 버전에서는 계속 samplerate를 사용하세요.

Logger 로그 출력

SDK 초기화 Log 설정 시, enableCustomLog를 구성하여 사용자 정의 로그를 추가할 수 있습니다.

현재 로그 내용은 30 KB로 제한되며, 문자를 초과하는 부분은 잘립니다.

사용 방법

//
//  FTLogger.h
//  GuanceSDK
/// 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 디버그 콘솔에서 다음과 같은 형식의 로그를 확인할 수 있습니다:

iOS/tvOS:

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

macOS:

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

2023-06-29 13:47:56.960021+0800 App[64731:44595791]: os_log 로그 출력의 표준 접두사;

[IOS APP] / [MACOS APP]: SDK가 사용자 정의 로그를 출력하는 구분 접두사. SDK는 실행 중인 플랫폼에 따라 접두사를 선택합니다:

[INFO]: 사용자 정의 로그의 레벨;

content: 사용자 정의 로그 내용;

{K=V,...,Kn=Vn}: 사용자 정의 속성.

문서 평가

이 페이지가 도움이 되었나요?