/*!
@header ECLoggingTEST
@abstract Module of Encore
@availability OS X, GNUstep
@copyright 2004, 2005, 2006 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
05.01.06 ola initial version
23.08.06 ola license changed
-------------------------------------------------------------------------
*/
#include
@implementation ECLoggingTEST
- installForContext: (NSString *) aContext usingLevel: (NSString *) aLevel
usingFileoutputAtPath: (NSString *) filename {
ECDefaultLoggingFormatter *loggingFormatter;
id loggingWriter;
ECLoggingConfiguration *loggingConfiguration;
loggingFormatter = [[[ECDefaultLoggingFormatter alloc] init] autorelease];
if( nil == filename ) {
loggingWriter = [[[ECNSLogLoggingWriter alloc] init] autorelease];
} else {
loggingWriter = [[[ECFileLoggingWriter alloc] init] autorelease];
[loggingWriter setBaseFilename: filename];
[loggingWriter setMaxFilesize: 128]; /* force one logging roation*/
}
loggingConfiguration = [[[ECLoggingConfiguration alloc] init] autorelease];
[loggingConfiguration setLoggingLevel: aLevel ];
[loggingConfiguration setLoggingWriter: loggingWriter];
[loggingConfiguration setLoggingFormatter: loggingFormatter];
if( nil != aContext ) {
[[ECLogging instance] addLoggingConfiguration: loggingConfiguration
forContext: aContext];
} else {
[[ECLogging instance] addRootLoggingConfiguration: loggingConfiguration];
}
return self;
}
- manualInitialization {
[self installForContext: @"sample" usingLevel: @"INFO"
usingFileoutputAtPath: nil];
[self installForContext: @"sample.specific" usingLevel: @"TRACE"
usingFileoutputAtPath: nil];
[self installForContext: @"sample.moreSpecificA" usingLevel: @"DEBUG"
usingFileoutputAtPath: nil];
[self installForContext: @"sample.moreSpecificB" usingLevel: @"ERROR"
usingFileoutputAtPath: nil];
[self installForContext: @"sample.file" usingLevel: @"DEBUG"
usingFileoutputAtPath: @"logging.log"];
[self installForContext: nil usingLevel: @"DEBUG"
usingFileoutputAtPath: nil ];
return self;
}
- logWithLogger: (ECLogger *) logger {
if( [logger isDebugEnabled] ) {
[logger debug: @"This is a logging message of level DEBUG!"];
}
if( [logger isTraceEnabled] ) {
[logger trace: @"Trace is given hereby..."];
}
if( [logger isInfoEnabled] ) {
[logger info: @"This is a logging message of level INFO!"];
}
[logger error: @"Logging with error code=%u and msg=%@", 112,
@"Error Message" ];
return self;
}
- testLogging {
NSLog( @"ECLoggingTEST::testLogging: BEGIN...." );
EC_AUTORELEASEPOOL_BEGIN
[self manualInitialization];
NSLog( @"Log as INFO----------->" );
[self logWithLogger: [ECLogging loggerForContext: @"sample"]];
NSLog( @"Log as TRACE----------->" );
[self logWithLogger: [ECLogging loggerForContext: @"sample.specific"]];
NSLog( @"Log as DEBUG----------->" );
[self logWithLogger: [ECLogging loggerForContext: @"sample.moreSpecificA"]];
NSLog( @"Log as ERROR----------->" );
[self logWithLogger: [ECLogging loggerForContext: @"sample.moreSpecificB"]];
NSLog( @"No Logger at all (--> root logger)----------->" );
[self logWithLogger: [ECLogging loggerForContext: @"NotSpecifiedContext"]];
NSLog( @"Log into file..." );
[self logWithLogger: [ECLogging loggerForContext: @"sample.file"]];
EC_AUTORELEASEPOOL_END
NSLog( @"ECLoggingTEST::testLogging: FINISHED" );
return self;
}
- testLoggingConfiguredViaXML {
EC_AUTORELEASEPOOL_BEGIN
NSLog( @"ECLoggingTEST::testLoggingConfiguredViaXML: BEGIN..." );
[ECLoggingConfigurationFactory configureUsingXMLFile: @"./logging.xml"];
NSLog( @"Run some logging tests..." );
NSLog( @"Log as DEBUG----------->" );
[self logWithLogger: [ECLogging loggerForContext: @"sample.A"]];
NSLog( @"Log as INFO----------->" );
[self logWithLogger: [ECLogging loggerForContext: @"sample.B"]];
NSLog( @"Log using ROOT loger----------->" );
[self logWithLogger: [ECLogging loggerForContext: @"NotSpecifiedContext"]];
EC_AUTORELEASEPOOL_END
return self;
}
@end