Sources/OT/Logs/SLSLogData.m (126 lines of code) (raw):
//
// SLSLogData.m
//
//
// Created by gordon on 2023/2/2.
//
#import "SLSLogData.h"
#import "../SLSTimeUtils.h"
@implementation SLSLogData
+ (SLSLogDataBuilder *) builder {
return [SLSLogDataBuilder builder];
}
- (instancetype)init
{
self = [super init];
if (self) {
_scope = [SLSLogScope getDefault];
_logRecords = [NSMutableArray array];
}
return self;
}
- (SLSLogData *) addRecord: (SLSRecord *) record {
if (nil == record) {
return self;
}
NSMutableArray *array = (NSMutableArray *)_logRecords;
[array addObject:record];
return self;
}
- (NSDictionary *) toJson {
return @{
@"resource": nil != _resource ? [_resource toDictionary] : @{},
@"scopeLogs": @[
@{
@"scope": [_scope toJson],
@"logRecords": [SLSRecord toArray:_logRecords]
}
]
};
}
@end
@implementation SLSLogDataBuilder
+ (SLSLogDataBuilder *) builder {
return [[SLSLogDataBuilder alloc] init];
}
- (instancetype)init
{
self = [super init];
if (self) {
_epochNanos = -1;
_level = SLS_LOGS_ERROR;
}
return self;
}
- (SLSLogDataBuilder *) setResource: (SLSResource *) resource {
_resource = resource;
return self;
}
- (SLSLogDataBuilder *) setLogsLevel: (SLSLogsLevel) level {
_level = level;
return self;
}
- (SLSLogDataBuilder *) setSeverityText: (NSString *) severityText {
_severityText = severityText;
return self;
}
- (SLSLogDataBuilder *) setScope: (SLSLogScope *) scope {
_scope = scope;
return self;
}
- (SLSLogDataBuilder *) setEpochNanos: (NSInteger *) epochNanos {
_epochNanos = epochNanos;
return self;
}
- (SLSLogDataBuilder *) setTraceId: (NSString *) traceId {
_traceId = traceId;
return self;
}
- (SLSLogDataBuilder *) setSpanId: (NSString *) spanId {
_spanId = spanId;
return self;
}
- (SLSLogDataBuilder *) setLogContent: (NSString *) content {
_logContent = content;
return self;
}
- (SLSLogDataBuilder *) setAttribute: (NSArray<SLSAttribute *> *) attributes {
_attributes = attributes;
return self;
}
- (SLSLogData *) build {
SLSLogData *data = [[SLSLogData alloc] init];
data.resource = _resource;
data.scope = nil != _scope ? _scope : [SLSLogScope getDefault];
SLSRecord *record = [SLSRecord record];
record.timeUnixNano = -1 != _epochNanos ? _epochNanos : [SLSTimeUtils now];
record.severityNumber = [self getSeverityNumber:_level];
record.severityText = _severityText.length > 0 ? _severityText : [self getSeverityText:_level];
record.body.stringValue = _logContent;
if (nil != _attributes) {
[record addAttribute:_attributes];
}
record.traceId = _traceId;
record.spanId = _spanId;
[data addRecord:record];
return data;
}
- (NSString *) getSeverityNumber: (SLSLogsLevel) level {
switch (level) {
case SLS_LOGS_UNDEFINED_SEVERITY_NUMBER: return @"UNDEFINED_SEVERITY_NUMBER";
case SLS_LOGS_TRACE: return @"SEVERITY_NUMBER_TRACE";
case SLS_LOGS_DEBUG: return @"SEVERITY_NUMBER_DEBUG";
case SLS_LOGS_INFO: return @"SEVERITY_NUMBER_INFO";
case SLS_LOGS_WARN: return @"SEVERITY_NUMBER_WARN";
case SLS_LOGS_ERROR: return @"SEVERITY_NUMBER_ERROR";
case SLS_LOGS_FATAL: return @"SEVERITY_NUMBER_FATAL";
default: return @"UNDEFINED_SEVERITY_NUMBER";
}
}
- (NSString *) getSeverityText: (SLSLogsLevel) level {
switch (level) {
case SLS_LOGS_UNDEFINED_SEVERITY_NUMBER: return @"UNDEFINED_SEVERITY_NUMBER";
case SLS_LOGS_TRACE: return @"TRACE";
case SLS_LOGS_DEBUG: return @"DEBUG";
case SLS_LOGS_INFO: return @"INFO";
case SLS_LOGS_WARN: return @"WARN";
case SLS_LOGS_ERROR: return @"ERROR";
case SLS_LOGS_FATAL: return @"FATAL";
default: return @"UNDEFINED_SEVERITY_NUMBER";
}
}
@end