| #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/CocoaLumberjack/CocoaLumberjack |
| * |
| * If you're new to the project you may wish to read the "Getting Started" wiki. |
| * https://github.com/CocoaLumberjack/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 |