// 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" @class DDLogFileInfo; /** * This class provides a logger to write log statements to a file. **/ // Default configuration and safety/sanity values. // // maximumFileSize -> kDDDefaultLogMaxFileSize // rollingFrequency -> kDDDefaultLogRollingFrequency // maximumNumberOfLogFiles -> kDDDefaultLogMaxNumLogFiles // logFilesDiskQuota -> kDDDefaultLogFilesDiskQuota // // You should carefully consider the proper configuration values for your application. extern unsigned long long const kDDDefaultLogMaxFileSize; extern NSTimeInterval const kDDDefaultLogRollingFrequency; extern NSUInteger const kDDDefaultLogMaxNumLogFiles; extern unsigned long long const kDDDefaultLogFilesDiskQuota; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #pragma mark - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // The LogFileManager protocol is designed to allow you to control all aspects of your log files. // // The primary purpose of this is to allow you to do something with the log files after they have been rolled. // Perhaps you want to compress them to save disk space. // Perhaps you want to upload them to an FTP server. // Perhaps you want to run some analytics on the file. // // A default LogFileManager is, of course, provided. // The default LogFileManager simply deletes old log files according to the maximumNumberOfLogFiles property. // // This protocol provides various methods to fetch the list of log files. // // There are two variants: sorted and unsorted. // If sorting is not necessary, the unsorted variant is obviously faster. // The sorted variant will return an array sorted by when the log files were created, // with the most recently created log file at index 0, and the oldest log file at the end of the array. // // You can fetch only the log file paths (full path including name), log file names (name only), // or an array of DDLogFileInfo objects. // The DDLogFileInfo class is documented below, and provides a handy wrapper that // gives you easy access to various file attributes such as the creation date or the file size. @protocol DDLogFileManager @required // Public properties /** * The maximum number of archived log files to keep on disk. * For example, if this property is set to 3, * then the LogFileManager will only keep 3 archived log files (plus the current active log file) on disk. * Once the active log file is rolled/archived, then the oldest of the existing 3 rolled/archived log files is deleted. * * You may optionally disable this option by setting it to zero. **/ @property (readwrite, assign, atomic) NSUInteger maximumNumberOfLogFiles; /** * The maximum space that logs can take. On rolling logfile all old logfiles that exceed logFilesDiskQuota will * be deleted. * * You may optionally disable this option by setting it to zero. **/ @property (readwrite, assign, atomic) unsigned long long logFilesDiskQuota; // Public methods - (NSString *)logsDirectory; - (NSArray *)unsortedLogFilePaths; - (NSArray *)unsortedLogFileNames; - (NSArray *)unsortedLogFileInfos; - (NSArray *)sortedLogFilePaths; - (NSArray *)sortedLogFileNames; - (NSArray *)sortedLogFileInfos; // Private methods (only to be used by DDFileLogger) - (NSString *)createNewLogFile; @optional // Notifications from DDFileLogger - (void)didArchiveLogFile:(NSString *)logFilePath; - (void)didRollAndArchiveLogFile:(NSString *)logFilePath; @end //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #pragma mark - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /** * Default log file manager. * * All log files are placed inside the logsDirectory. * If a specific logsDirectory isn't specified, the default directory is used. * On Mac, this is in ~/Library/Logs/. * On iPhone, this is in ~/Library/Caches/Logs. * * Log files are named "