Skip to content
This repository
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

file 135 lines (113 sloc) 4.165 kb
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];
}
Something went wrong with that request. Please try again.