123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- #import <Foundation/Foundation.h>
- #import "DDLog.h"
- /**
- * Welcome to Cocoa Lumberjack!
- *
- * The project page has a wealth of documentation if you have any questions.
- * https://github.com/robbiehanson/CocoaLumberjack
- *
- * If you're new to the project you may wish to read the "Getting Started" wiki.
- * https://github.com/robbiehanson/CocoaLumberjack/wiki/GettingStarted
- *
- *
- * This class provides an abstract implementation of a database logger.
- *
- * That is, it provides the base implementation for a database logger to build atop of.
- * All that is needed for a concrete database logger is to extend this class
- * and override the methods in the implementation file that are prefixed with "db_".
- **/
- @interface DDAbstractDatabaseLogger : DDAbstractLogger {
- @protected
- NSUInteger saveThreshold;
- NSTimeInterval saveInterval;
- NSTimeInterval maxAge;
- NSTimeInterval deleteInterval;
- BOOL deleteOnEverySave;
-
- BOOL saveTimerSuspended;
- NSUInteger unsavedCount;
- dispatch_time_t unsavedTime;
- dispatch_source_t saveTimer;
- dispatch_time_t lastDeleteTime;
- dispatch_source_t deleteTimer;
- }
- /**
- * Specifies how often to save the data to disk.
- * Since saving is an expensive operation (disk io) it is not done after every log statement.
- * These properties allow you to configure how/when the logger saves to disk.
- *
- * A save is done when either (whichever happens first):
- *
- * - The number of unsaved log entries reaches saveThreshold
- * - The amount of time since the oldest unsaved log entry was created reaches saveInterval
- *
- * You can optionally disable the saveThreshold by setting it to zero.
- * If you disable the saveThreshold you are entirely dependent on the saveInterval.
- *
- * You can optionally disable the saveInterval by setting it to zero (or a negative value).
- * If you disable the saveInterval you are entirely dependent on the saveThreshold.
- *
- * It's not wise to disable both saveThreshold and saveInterval.
- *
- * The default saveThreshold is 500.
- * The default saveInterval is 60 seconds.
- **/
- @property (assign, readwrite) NSUInteger saveThreshold;
- @property (assign, readwrite) NSTimeInterval saveInterval;
- /**
- * It is likely you don't want the log entries to persist forever.
- * Doing so would allow the database to grow infinitely large over time.
- *
- * The maxAge property provides a way to specify how old a log statement can get
- * before it should get deleted from the database.
- *
- * The deleteInterval specifies how often to sweep for old log entries.
- * Since deleting is an expensive operation (disk io) is is done on a fixed interval.
- *
- * An alternative to the deleteInterval is the deleteOnEverySave option.
- * This specifies that old log entries should be deleted during every save operation.
- *
- * You can optionally disable the maxAge by setting it to zero (or a negative value).
- * If you disable the maxAge then old log statements are not deleted.
- *
- * You can optionally disable the deleteInterval by setting it to zero (or a negative value).
- *
- * If you disable both deleteInterval and deleteOnEverySave then old log statements are not deleted.
- *
- * It's not wise to enable both deleteInterval and deleteOnEverySave.
- *
- * The default maxAge is 7 days.
- * The default deleteInterval is 5 minutes.
- * The default deleteOnEverySave is NO.
- **/
- @property (assign, readwrite) NSTimeInterval maxAge;
- @property (assign, readwrite) NSTimeInterval deleteInterval;
- @property (assign, readwrite) BOOL deleteOnEverySave;
- /**
- * Forces a save of any pending log entries (flushes log entries to disk).
- **/
- - (void)savePendingLogEntries;
- /**
- * Removes any log entries that are older than maxAge.
- **/
- - (void)deleteOldLogEntries;
- @end
|