forked from tomaz/appledoc
-
Notifications
You must be signed in to change notification settings - Fork 0
/
LoggingProvider.m
134 lines (113 loc) · 4.07 KB
/
LoggingProvider.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
//
// LoggingProvider.m
// appledoc
//
// Created by Tomaz Kragelj on 12.4.09.
// Copyright 2009 Tomaz Kragelj. All rights reserved.
//
#import "LoggingProvider.h"
#import "CommandLineParser.h"
//////////////////////////////////////////////////////////////////////////////////////////
#pragma mark Definitions
//////////////////////////////////////////////////////////////////////////////////////////
#define kTKLogMessageLength 60
//////////////////////////////////////////////////////////////////////////////////////////
#pragma mark Logger implementation
//////////////////////////////////////////////////////////////////////////////////////////
@implementation Logger
//----------------------------------------------------------------------------------------
+ (Logger*) sharedInstance
{
static Logger* result = nil;
if (!result) result = [[Logger alloc] init];
return result;
}
//----------------------------------------------------------------------------------------
- (void) logError:(NSString*) message
{
[self logMessage:message type:@"ERROR "];
}
//----------------------------------------------------------------------------------------
- (void) logNormal:(NSString*) message
{
if ([self isNormalEnabled])
{
[self logMessage:message type:@"NORMAL "];
}
}
//----------------------------------------------------------------------------------------
- (void) logInfo:(NSString*) message
{
if ([self isInfoEnabled])
{
[self logMessage:message type:@"INFO "];
}
}
//----------------------------------------------------------------------------------------
- (void) logVerbose:(NSString*) message
{
if ([self isVerboseEnabled])
{
[self logMessage:message type:@"VERBOSE"];
}
}
//----------------------------------------------------------------------------------------
- (void) logDebug:(NSString*) message
{
if ([self isDebugEnabled])
{
[self logMessage:message type:@"DEBUG "];
}
}
//----------------------------------------------------------------------------------------
- (BOOL) isNormalEnabled
{
return ([CommandLineParser sharedInstance].verboseLevel >= kTKVerboseLevelNormal);
}
//----------------------------------------------------------------------------------------
- (BOOL) isInfoEnabled
{
return ([CommandLineParser sharedInstance].verboseLevel >= kTKVerboseLevelInfo);
}
//----------------------------------------------------------------------------------------
- (BOOL) isVerboseEnabled
{
return ([CommandLineParser sharedInstance].verboseLevel >= kTKVerboseLevelVerbose);
}
//----------------------------------------------------------------------------------------
- (BOOL) isDebugEnabled
{
return ([CommandLineParser sharedInstance].verboseLevel >= kTKVerboseLevelDebug);
}
//----------------------------------------------------------------------------------------
- (void) logMessage:(NSString*) message type:(NSString*) type
{
printf(
"%s [%s] | %s",
[[[NSCalendarDate date] descriptionWithCalendarFormat:@"%H:%M:%S:%F"] cStringUsingEncoding:NSASCIIStringEncoding],
[type cStringUsingEncoding:NSASCIIStringEncoding],
[message cStringUsingEncoding:NSASCIIStringEncoding]);
}
@end
//////////////////////////////////////////////////////////////////////////////////////////
#pragma mark Global functions
//////////////////////////////////////////////////////////////////////////////////////////
//----------------------------------------------------------------------------------------
NSString* FormatLogMessage(char* file, const char* method, int line, NSString* message, ...)
{
// Format all parameters into the message.
va_list args;
va_start(args, message);
NSMutableString* msg = [[[NSMutableString alloc] initWithFormat:message arguments:args] autorelease];
va_end(args);
// If debug verbose level is requested, we should include information about the source.
if ([CommandLineParser sharedInstance].verboseLevel >= kTKVerboseLevelFull)
{
while ([msg length] < kTKLogMessageLength)
{
[msg appendString:@" "];
}
return [NSString stringWithFormat:@"%@\n< %s line %d >\n\n", msg, method, line];
}
return [NSString stringWithFormat:@"%@\n", msg];
}