123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- // Software License Agreement (BSD License)
- //
- // Copyright (c) 2010-2015, Deusty, LLC
- // All rights reserved.
- //
- // Redistribution and use of this software in source and binary forms,
- // with or without modification, are permitted provided that the following conditions are met:
- //
- // * Redistributions of source code must retain the above copyright notice,
- // this list of conditions and the following disclaimer.
- //
- // * Neither the name of Deusty nor the names of its contributors may be used
- // to endorse or promote products derived from this software without specific
- // prior written permission of Deusty, LLC.
- // Disable legacy macros
- #ifndef DD_LEGACY_MACROS
- #define DD_LEGACY_MACROS 0
- #endif
- #import "DDLog.h"
- /**
- * 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
|