콘텐츠로 이동

로그 설정

로그 초기화 설정

FTLoggerConfig *loggerConfig = [[FTLoggerConfig alloc] init];
loggerConfig.enableCustomLog = YES;
loggerConfig.printCustomLogToConsole = YES;
loggerConfig.enableLinkRumData = YES;
loggerConfig.logLevelFilter = @[@(FTStatusError), @(FTStatusCritical)];
loggerConfig.discardType = FTDiscardOldest;
[[FTSDKAgent sharedInstance] startLoggerWithConfigOptions:loggerConfig];
let loggerConfig = FTLoggerConfig()
loggerConfig.enableCustomLog = true
loggerConfig.enableLinkRumData = true
loggerConfig.printCustomLogToConsole = true
loggerConfig.logLevelFilter = [NSNumber(value: FTLogStatus.statusError.rawValue), NSNumber(value: FTLogStatus.statusCritical.rawValue)]
loggerConfig.discardType = .discardOldest
FTSDKAgent.sharedInstance().startLogger(withConfigOptions: loggerConfig)
속성 타입 필수 의미
sampleRate int 아니요 샘플링 비율. 범위 [0,100], 0은 수집 안 함, 100은 전체 수집, 기본값 100
enableCustomLog BOOL 아니요 사용자 정의 로그 업로드 여부, 기본값 NO
logLevelFilter NSArray 아니요 수집할 사용자 정의 로그 상태 배열, 기본값은 전체 수집
enableLinkRumData BOOL 아니요 RUM 데이터 연결 여부, 기본값 NO
discardType FTLogCacheDiscard 아니요 로그가 제한上限에 도달한 후의 로그 폐기 규칙, 기본값 FTDiscard
printCustomLogToConsole BOOL 아니요 사용자 정의 로그를 콘솔에 출력할지 여부, 기본값 NO
globalContext NSDictionary 아니요 로그 사용자 정의 태그 추가, 추가 규칙은 사용자 정의 태그 사용 참조

Logger 로그 출력

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

사용 방법

/// info 유형 사용자 정의 로그 추가
-(void)info:(NSString *)content property:(nullable NSDictionary *)property;

/// warning 유형 사용자 정의 로그 추가
-(void)warning:(NSString *)content property:(nullable NSDictionary *)property;

/// error 유형 사용자 정의 로그 추가
-(void)error:(NSString *)content property:(nullable NSDictionary *)property;

/// critical 유형 사용자 정의 로그 추가
-(void)critical:(NSString *)content property:(nullable NSDictionary *)property;

/// ok 유형 사용자 정의 로그 추가
-(void)ok:(NSString *)content property:(nullable NSDictionary *)property;
open class FTLogger : NSObject, FTLoggerProtocol {}
public protocol FTLoggerProtocol : NSObjectProtocol {
    optional func info(_ content: String, property: [AnyHashable : Any]?)
    optional func warning(_ content: String, property: [AnyHashable : Any]?)
    optional func error(_ content: String, property: [AnyHashable : Any]?)
    optional func critical(_ content: String, property: [AnyHashable : Any]?)
    optional func ok(_ content: String, property: [AnyHashable : Any]?)
}

로그 레벨

typedef NS_ENUM(NSInteger, FTLogStatus) {
    FTStatusInfo = 0,
    FTStatusWarning,
    FTStatusError,
    FTStatusCritical,
    FTStatusOk,
};
public enum FTLogStatus : Int, @unchecked Sendable {
    case statusInfo = 0
    case statusWarning = 1
    case statusError = 2
    case statusCritical = 3
    case statusOk = 4
}

코드 예제

// 방법 1: FTSDKAgent 사용
// 참고: SDK가 초기화된 상태에서 사용해야 합니다. 그렇지 않으면 테스트 환경에서 assertion이 실패하여 크래시가 발생할 수 있습니다.
[[FTSDKAgent sharedInstance] logging:@"test_custom" status:FTStatusInfo];

// 방법 2: FTLogger 사용 (권장)
// SDK가 초기화되지 않은 경우 FTLogger의 메서드를 호출하여 사용자 정의 로그를 추가해도 실패하지만, assertion 실패로 인한 크래시는 발생하지 않습니다.
[[FTLogger sharedInstance] info:@"test" property:@{@"custom_key":@"custom_value"}];
// 방법 1: FTSDKAgent 사용
FTSDKAgent.sharedInstance().logging("contentStr", status: .statusInfo, property: ["custom_key":"custom_value"])

// 방법 2: FTLogger 사용 (권장)
FTLogger.shared().info("contentStr", property: ["custom_key":"custom_value"])

사용자 정의 로그 콘솔 출력

printCustomLogToConsole = YES로 설정하여 사용자 정의 로그를 콘솔에 출력하면, Xcode 디버그 콘솔에서 다음 형식의 로그를 확인할 수 있습니다:

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 로그 출력의 표준 접두사
  • [MACOS APP]: SDK 출력 사용자 정의 로그를 구분하는 접두사
  • [INFO]: 사용자 정의 로그 레벨
  • content: 사용자 정의 로그 내용
  • {K=V,...,Kn=Vn}: 사용자 정의 속성

문서 평가

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