-
Notifications
You must be signed in to change notification settings - Fork 299
/
Copy pathADJLogger.m
134 lines (106 loc) · 3.79 KB
/
ADJLogger.m
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
//
// ADJLogger.m
// Adjust
//
// Created by Christian Wellenbrock on 2012-11-15.
// Copyright (c) 2012-2014 adjust GmbH. All rights reserved.
//
#import "ADJLogger.h"
static NSString * const kLogTag = @"Adjust";
@interface ADJLogger()
@property (nonatomic, assign) ADJLogLevel loglevel;
@property (nonatomic, assign) BOOL logLevelLocked;
@property (nonatomic, assign) BOOL isProductionEnvironment;
@end
#pragma mark -
@implementation ADJLogger
- (id)init {
self = [super init];
if (self == nil) return nil;
//default values
_loglevel = ADJLogLevelInfo;
self.logLevelLocked = NO;
self.isProductionEnvironment = NO;
return self;
}
- (void)setLogLevel:(ADJLogLevel)logLevel
isProductionEnvironment:(BOOL)isProductionEnvironment
{
if (self.logLevelLocked) {
return;
}
_loglevel = logLevel;
self.isProductionEnvironment = isProductionEnvironment;
}
- (void)lockLogLevel {
self.logLevelLocked = YES;
}
- (void)verbose:(NSString *)format, ... {
if (self.isProductionEnvironment) return;
if (self.loglevel > ADJLogLevelVerbose) return;
va_list parameters; va_start(parameters, format);
[self logLevel:@"v" format:format parameters:parameters];
}
- (void)debug:(NSString *)format, ... {
if (self.isProductionEnvironment) return;
if (self.loglevel > ADJLogLevelDebug) return;
va_list parameters; va_start(parameters, format);
[self logLevel:@"d" format:format parameters:parameters];
}
- (void)info:(NSString *)format, ... {
if (self.isProductionEnvironment) return;
if (self.loglevel > ADJLogLevelInfo) return;
va_list parameters; va_start(parameters, format);
[self logLevel:@"i" format:format parameters:parameters];
}
- (void)warn:(NSString *)format, ... {
if (self.isProductionEnvironment) return;
if (self.loglevel > ADJLogLevelWarn) return;
va_list parameters; va_start(parameters, format);
[self logLevel:@"w" format:format parameters:parameters];
}
- (void)warnInProduction:(nonnull NSString *)format, ... {
if (self.loglevel > ADJLogLevelWarn) return;
va_list parameters; va_start(parameters, format);
[self logLevel:@"w" format:format parameters:parameters];
}
- (void)error:(NSString *)format, ... {
if (self.isProductionEnvironment) return;
if (self.loglevel > ADJLogLevelError) return;
va_list parameters; va_start(parameters, format);
[self logLevel:@"e" format:format parameters:parameters];
}
- (void)assert:(NSString *)format, ... {
if (self.isProductionEnvironment) return;
if (self.loglevel > ADJLogLevelAssert) return;
va_list parameters; va_start(parameters, format);
[self logLevel:@"a" format:format parameters:parameters];
}
// private implementation
- (void)logLevel:(NSString *)logLevel format:(NSString *)format parameters:(va_list)parameters {
NSString *string = [[NSString alloc] initWithFormat:format arguments:parameters];
va_end(parameters);
NSArray *lines = [string componentsSeparatedByString:@"\n"];
for (NSString *line in lines) {
NSLog(@"\t[%@]%@: %@", kLogTag, logLevel, line);
}
}
+ (ADJLogLevel)logLevelFromString:(NSString *)logLevelString {
if ([logLevelString isEqualToString:@"verbose"])
return ADJLogLevelVerbose;
if ([logLevelString isEqualToString:@"debug"])
return ADJLogLevelDebug;
if ([logLevelString isEqualToString:@"info"])
return ADJLogLevelInfo;
if ([logLevelString isEqualToString:@"warn"])
return ADJLogLevelWarn;
if ([logLevelString isEqualToString:@"error"])
return ADJLogLevelError;
if ([logLevelString isEqualToString:@"assert"])
return ADJLogLevelAssert;
if ([logLevelString isEqualToString:@"suppress"])
return ADJLogLevelSuppress;
// default value if string does not match
return ADJLogLevelInfo;
}
@end