forked from tidev/titanium-sdk
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAPIModule.m
129 lines (108 loc) · 3.19 KB
/
APIModule.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
/**
* Appcelerator Titanium Mobile
* Copyright (c) 2009-2010 by Appcelerator, Inc. All Rights Reserved.
* Licensed under the terms of the Apache Public License
* Please see the LICENSE included with this distribution for details.
*/
#import "APIModule.h"
#import "TiUtils.h"
#import "TiBase.h"
#import "TiApp.h"
#import "TiDebugger.h"
#import "TiExceptionHandler.h"
extern NSString * const TI_APPLICATION_DEPLOYTYPE;
@implementation APIModule
-(void)logMessage:(NSArray*)args severity:(NSString*)severity
{
NSMutableString* message = [NSMutableString string];
NSString* lcSeverity = [severity lowercaseString];
DebuggerLogLevel level = OUT;
if ([lcSeverity isEqualToString:@"warn"]) {
level = WARN;
}
else if ([lcSeverity isEqualToString:@"error"] ||
[lcSeverity isEqualToString:@"critical"] ||
[lcSeverity isEqualToString:@"fatal"]) {
level = ERR;
}
else if ([lcSeverity isEqualToString:@"trace"]) {
level = TRACE;
}
else if ([lcSeverity isEqualToString:@"debug"]) {
level = LOG_DEBUG;
}
if ([[TiApp app] debugMode]) {
NSMutableArray* messages = [NSMutableArray arrayWithArray:args];
if (![lcSeverity isEqualToString:@"info"]) { // Custom severity, or just a badly-formed log; either way, debugger treats it as info
[messages insertObject:[NSString stringWithFormat:@"[%@]", severity] atIndex:0];
}
TiDebuggerLogMessage(level, [messages componentsJoinedByString:@" "]);
}
else {
if ([TI_APPLICATION_DEPLOYTYPE isEqualToString:@"production"]) {
if (level != ERR) {
return;
}
}
NSLog(@"[%@] %@", [severity uppercaseString], [args componentsJoinedByString:@" "]);
fflush(stderr);
}
}
-(id)transform:(id)arg
{
if ([arg isKindOfClass:[NSDictionary class]]) {
return [[[[TiScriptError alloc] initWithDictionary:arg] autorelease] description];
}
return arg;
}
-(void)debug:(NSArray*)args
{
[self logMessage:args severity:@"debug"];
}
-(void)info:(NSArray*)args
{
[self logMessage:args severity:@"info"];
}
-(void)warn:(NSArray*)args
{
[self logMessage:args severity:@"warn"];
}
-(void)error:(NSArray*)args
{
[self logMessage:args severity:@"error"];
}
-(void)trace:(NSArray*)args
{
[self logMessage:args severity:@"trace"];
}
-(void)timestamp:(NSArray*)args
{
NSLog(@"[TIMESTAMP] %f %@", [NSDate timeIntervalSinceReferenceDate], [self transform:[args objectAtIndex:0]]);
fflush(stderr);
}
-(void)notice:(NSArray*)args
{
[self logMessage:args severity:@"info"];
}
-(void)critical:(NSArray*)args
{
[self logMessage:args severity:@"error"];
}
-(void)log:(NSArray*)args
{
if ([args count] > 1) {
[self logMessage:[args subarrayWithRange:NSMakeRange(1, [args count]-1)] severity:[args objectAtIndex:0]];
}
else {
[self logMessage:args severity:@"info"];
}
}
-(void)reportUnhandledException:(NSArray*)args
{
id lineNumber = [args objectAtIndex:0];
id source = [args objectAtIndex:1];
id message = [args objectAtIndex:2];
NSLog(@"[ERROR] %@:%@ %@",source,lineNumber,message);
fflush(stderr);
}
@end