/*!
@header ECLogger
@abstract Module of Encore
@availability OS X, GNUstep
@copyright 2004, 2005, 2006 Oliver Langer
Author: Oliver Langer
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-------------------------------------------------------------------------
Modification history
04.02.06 ola initial version
22.08.06 ola license changed
-------------------------------------------------------------------------
*/
#include
@implementation ECLogger
- initWithLoggingLevel: (ECLoggingLevel) aLoggingLevel
withLoggingFormatter: (id ) aLoggingFormatter
withLoggingWriter: (id ) aLoggingWriter {
self = [super init];
self->loggingLevel = aLoggingLevel;
self->loggingFormatter = [aLoggingFormatter retain];
self->loggingWriter = [aLoggingWriter retain];
return self;
}
- (void) dealloc {
[self->loggingFormatter release];
[self->loggingWriter release];
[super dealloc];
}
- critical: (NSString *) msgFormat, ... {
va_list args;
va_start( args, msgFormat );
if( [self isCriticalEnabled] ) {
[self logUsingLevel: LOGLEVEL_CRITICAL
withMessage: msgFormat
withArguments: args];
}
va_end( args );
return self;
}
- debug: (NSString *) msgFormat, ... {
va_list args;
va_start( args, msgFormat );
if( [self isDebugEnabled] ) {
[self logUsingLevel: LOGLEVEL_DEBUG
withMessage: msgFormat
withArguments: args];
}
va_end( args );
return self;
}
- error: (NSString *) msgFormat, ... {
va_list args;
va_start( args, msgFormat );
if( [self isErrorEnabled] ) {
[self logUsingLevel: LOGLEVEL_ERROR
withMessage: msgFormat
withArguments: args];
}
va_end( args );
return self;
}
- fatal: (NSString *) msgFormat, ... {
va_list args;
va_start( args, msgFormat );
[self logUsingLevel: LOGLEVEL_FATAL
withMessage: msgFormat
withArguments: args];
va_end( args );
return self;
}
- info: (NSString *) msgFormat, ... {
va_list args;
va_start( args, msgFormat );
if( [self isInfoEnabled] ) {
[self logUsingLevel: LOGLEVEL_INFO
withMessage: msgFormat
withArguments: args];
}
va_end( args );
return self;
}
- (BOOL) isDebugEnabled {
return self->loggingLevel <= LOGLEVEL_DEBUG;
}
- (BOOL) isTraceEnabled {
return self->loggingLevel <= LOGLEVEL_TRACE;
}
- (BOOL) isInfoEnabled {
return self->loggingLevel <= LOGLEVEL_INFO;
}
- (BOOL) isWarnEnabled {
return self->loggingLevel <= LOGLEVEL_WARN;
}
- (BOOL) isErrorEnabled {
return self->loggingLevel <= LOGLEVEL_ERROR;
}
- (BOOL) isCriticalEnabled {
return self->loggingLevel <= LOGLEVEL_CRITICAL;
}
- logUsingLevel: (ECLoggingLevel) aLevel
withMessage: (NSString *) aMsg
withArguments: (va_list) args {
NSString *formattedOutput;
formattedOutput = [self->loggingFormatter
formatLoggingOutputForLevel: aLevel
format: aMsg
arguments: args];
if( nil != formattedOutput ) {
[self->loggingWriter writeLog: formattedOutput];
}
return self;
}
- warn: (NSString *) msgFormat, ... {
va_list args;
va_start( args, msgFormat );
if( [self isWarnEnabled] ) {
[self logUsingLevel: LOGLEVEL_WARN
withMessage: msgFormat
withArguments: args];
}
va_end( args );
return self;
}
- trace: (NSString *) msgFormat, ... {
va_list args;
va_start( args, msgFormat );
if( [self isTraceEnabled] ) {
[self logUsingLevel: LOGLEVEL_TRACE
withMessage: msgFormat
withArguments: args];
}
va_end( args );
return self;
}
@end