12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- //
- // OverflowTestMacAppDelegate.m
- // OverflowTestMac
- //
- // CocoaLumberjack Demos
- //
- #import "OverflowTestMacAppDelegate.h"
- #import <CocoaLumberjack/CocoaLumberjack.h>
- #import "SlowLogger.h"
- // Debug levels: off, error, warn, info, verbose
- static const DDLogLevel ddLogLevel = DDLogLevelVerbose;
- @implementation OverflowTestMacAppDelegate
- @synthesize window;
- - (void)applicationDidFinishLaunching:(NSNotification *)aNotification
- {
- // Since logging can be asynchronous, its possible for rogue threads to flood the logging queue.
- // That is, to issue an abundance of log statements faster than the logging thread can keepup.
- // Typically such a scenario occurs when log statements are added haphazardly within large loops,
- // but may also be possible if relatively slow loggers are being used.
- //
- // Lumberjack has the ability to cap the queue size at a given number of outstanding log statements.
- // If a thread attempts to issue a log statement when the queue is already maxed out,
- // the issuing thread will block until the queue size drops below the max again.
- //
- // This Xcode project demonstrates this feature by using a "Slow Logger".
-
- NSLog(@"How to use this test:");
- NSLog(@"1. Set the DEBUG definition to YES in DDLog.m");
- NSLog(@"2. Set the LOG_MAX_QUEUE_SIZE definition to 5 in DDLog.m\n\n");
-
- SlowLogger *slowLogger = [[SlowLogger alloc] init];
- [DDLog addLogger:slowLogger];
-
- [DDLog addLogger:[DDASLLogger sharedInstance]];
- [DDLog addLogger:[DDTTYLogger sharedInstance]];
-
- [NSThread detachNewThreadSelector:@selector(bgThread1) toTarget:self withObject:nil];
- [NSThread detachNewThreadSelector:@selector(bgThread2) toTarget:self withObject:nil];
-
- NSLog(@"mainThread");
-
- for (int i = 0; i < 10; i++)
- {
- DDLogVerbose(@"mainThread: %i", i);
- }
-
- [DDLog flushLog];
- }
- - (void)bgThread1
- {
- @autoreleasepool {
-
- NSLog(@"bgThread1");
-
- for (int i = 0; i < 10; i++)
- {
- DDLogVerbose(@"bgThread1 : %i", i);
- }
- }
- }
- - (void)bgThread2
- {
- @autoreleasepool {
-
- NSLog(@"bgThread2");
-
- for (int i = 0; i < 10; i++)
- {
- DDLogVerbose(@"bgThread2 : %i", i);
- }
- }
- }
- @end
|