Subversion Repositories Mobile Apps.GyroMouse

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 pmbaty 1
#import <Foundation/Foundation.h>
2
 
3
#import "DDLog.h"
4
 
5
/**
6
 * Welcome to Cocoa Lumberjack!
7
 *
8
 * The project page has a wealth of documentation if you have any questions.
9
 * https://github.com/CocoaLumberjack/CocoaLumberjack
10
 *
11
 * If you're new to the project you may wish to read the "Getting Started" wiki.
12
 * https://github.com/CocoaLumberjack/CocoaLumberjack/wiki/GettingStarted
13
 *
14
 *
15
 * This class provides an abstract implementation of a database logger.
16
 *
17
 * That is, it provides the base implementation for a database logger to build atop of.
18
 * All that is needed for a concrete database logger is to extend this class
19
 * and override the methods in the implementation file that are prefixed with "db_".
20
**/
21
 
22
@interface DDAbstractDatabaseLogger : DDAbstractLogger {
23
@protected
24
    NSUInteger saveThreshold;
25
    NSTimeInterval saveInterval;
26
    NSTimeInterval maxAge;
27
    NSTimeInterval deleteInterval;
28
    BOOL deleteOnEverySave;
29
 
30
    BOOL saveTimerSuspended;
31
    NSUInteger unsavedCount;
32
    dispatch_time_t unsavedTime;
33
    dispatch_source_t saveTimer;
34
    dispatch_time_t lastDeleteTime;
35
    dispatch_source_t deleteTimer;
36
}
37
 
38
/**
39
 * Specifies how often to save the data to disk.
40
 * Since saving is an expensive operation (disk io) it is not done after every log statement.
41
 * These properties allow you to configure how/when the logger saves to disk.
42
 *
43
 * A save is done when either (whichever happens first):
44
 *
45
 * - The number of unsaved log entries reaches saveThreshold
46
 * - The amount of time since the oldest unsaved log entry was created reaches saveInterval
47
 *
48
 * You can optionally disable the saveThreshold by setting it to zero.
49
 * If you disable the saveThreshold you are entirely dependent on the saveInterval.
50
 *
51
 * You can optionally disable the saveInterval by setting it to zero (or a negative value).
52
 * If you disable the saveInterval you are entirely dependent on the saveThreshold.
53
 *
54
 * It's not wise to disable both saveThreshold and saveInterval.
55
 *
56
 * The default saveThreshold is 500.
57
 * The default saveInterval is 60 seconds.
58
**/
59
@property (assign, readwrite) NSUInteger saveThreshold;
60
@property (assign, readwrite) NSTimeInterval saveInterval;
61
 
62
/**
63
 * It is likely you don't want the log entries to persist forever.
64
 * Doing so would allow the database to grow infinitely large over time.
65
 *
66
 * The maxAge property provides a way to specify how old a log statement can get
67
 * before it should get deleted from the database.
68
 *
69
 * The deleteInterval specifies how often to sweep for old log entries.
70
 * Since deleting is an expensive operation (disk io) is is done on a fixed interval.
71
 *
72
 * An alternative to the deleteInterval is the deleteOnEverySave option.
73
 * This specifies that old log entries should be deleted during every save operation.
74
 *
75
 * You can optionally disable the maxAge by setting it to zero (or a negative value).
76
 * If you disable the maxAge then old log statements are not deleted.
77
 *
78
 * You can optionally disable the deleteInterval by setting it to zero (or a negative value).
79
 *
80
 * If you disable both deleteInterval and deleteOnEverySave then old log statements are not deleted.
81
 *
82
 * It's not wise to enable both deleteInterval and deleteOnEverySave.
83
 *
84
 * The default maxAge is 7 days.
85
 * The default deleteInterval is 5 minutes.
86
 * The default deleteOnEverySave is NO.
87
**/
88
@property (assign, readwrite) NSTimeInterval maxAge;
89
@property (assign, readwrite) NSTimeInterval deleteInterval;
90
@property (assign, readwrite) BOOL deleteOnEverySave;
91
 
92
/**
93
 * Forces a save of any pending log entries (flushes log entries to disk).
94
**/
95
- (void)savePendingLogEntries;
96
 
97
/**
98
 * Removes any log entries that are older than maxAge.
99
**/
100
- (void)deleteOldLogEntries;
101
 
102
@end