summaryrefslogtreecommitdiff
path: root/SmartDeviceLink/SDLLogModel.m
blob: 46b89c4641a83921ad28ad10bba009949b9ac09c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
//
//  SDLLogModel.m
//  SmartDeviceLink-iOS
//
//  Created by Joel Fischer on 2/27/17.
//  Copyright © 2017 smartdevicelink. All rights reserved.
//

#import "SDLLogModel.h"

NS_ASSUME_NONNULL_BEGIN

@implementation SDLLogModel

- (instancetype)initWithMessage:(NSString *)message
                      timestamp:(NSDate *)timestamp
                          level:(SDLLogLevel)level
                       fileName:(NSString *)fileName
                     moduleName:(nullable NSString *)moduleName
                   functionName:(NSString *)functionName
                           line:(NSInteger)line
                     queueLabel:(NSString *)queueLabel {
    self = [super init];
    if (!self) { return nil; }

    _message = message;
    _timestamp = timestamp;
    _level = level;
    _fileName = fileName;
    _moduleName = moduleName ? moduleName : @"";
    _functionName = functionName;
    _line = line;
    _queueLabel = queueLabel;

    return self;
}


#pragma mark - Setters / Getters

- (void)setModuleName:(nullable NSString *)moduleName {
    _moduleName = moduleName ? moduleName : @"";
}


#pragma mark - NSCopying

- (id)copyWithZone:(nullable NSZone *)zone {
    return [[self copyWithZone:zone] initWithMessage:_message timestamp:_timestamp level:_level fileName:_fileName moduleName:_moduleName functionName:_functionName line:_line queueLabel:_queueLabel];
}


#pragma mark - Description

- (NSString *)description {
    return [NSString stringWithFormat:@"SDLLogModel (%@): timestamp: %@, file name: %@, module: %@, function: %@, line: %ld, queue: %@, message: %@", [self sdl_stringForLogLevel:self.level], self.timestamp, self.fileName, self.moduleName, self.functionName, self.line, self.queueLabel, self.message];
}

- (NSString *)sdl_stringForLogLevel:(SDLLogLevel)level {
    switch (level) {
        case SDLLogLevelOff: return @"Off";
        case SDLLogLevelVerbose: return @"Verbose";
        case SDLLogLevelDebug: return @"Debug";
        case SDLLogLevelWarning: return @"Warning";
        case SDLLogLevelError: return @"Error";
        case SDLLogLevelDefault: return @"Default";
    }
}

@end

NS_ASSUME_NONNULL_END