150 lines
5.8 KiB
Objective-C
150 lines
5.8 KiB
Objective-C
//
|
|
// DDLogFileManager.h
|
|
// NVLogManagerDemo
|
|
//
|
|
// Created by cxb on 2023/5/10.
|
|
// Copyright © 2023 com.zhouxi. All rights reserved.
|
|
//
|
|
/**
|
|
* 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.
|
|
*/
|
|
|
|
|
|
#import <Foundation/Foundation.h>
|
|
|
|
NS_ASSUME_NONNULL_BEGIN
|
|
@class DDLogFileInfo;
|
|
@protocol DDLogFileManager <NSObject>
|
|
|
|
@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 log files 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
|
|
|
|
/**
|
|
* Returns the logs directory (path)
|
|
*/
|
|
@property (nonatomic, readonly, copy) NSString *logsDirectory;//全路径
|
|
|
|
@property (nonatomic, readonly, copy) NSString *directoryName;//文件夹名称
|
|
|
|
/**
|
|
* Returns an array of `NSString` objects,
|
|
* each of which is the filePath to an existing log file on disk.
|
|
**/
|
|
@property (nonatomic, readonly, strong) NSArray<NSString *> *unsortedLogFilePaths;
|
|
|
|
/**
|
|
* Returns an array of `NSString` objects,
|
|
* each of which is the fileName of an existing log file on disk.
|
|
**/
|
|
@property (nonatomic, readonly, strong) NSArray<NSString *> *unsortedLogFileNames;
|
|
|
|
/**
|
|
* Returns an array of `DDLogFileInfo` objects,
|
|
* each representing an existing log file on disk,
|
|
* and containing important information about the log file such as it's modification date and size.
|
|
**/
|
|
@property (nonatomic, readonly, strong) NSArray<DDLogFileInfo *> *unsortedLogFileInfos;
|
|
|
|
/**
|
|
* Just like the `unsortedLogFilePaths` method, but sorts the array.
|
|
* The items in the array are sorted by creation date.
|
|
* The first item in the array will be the most recently created log file.
|
|
**/
|
|
@property (nonatomic, readonly, strong) NSArray<NSString *> *sortedLogFilePaths;
|
|
|
|
/**
|
|
* Just like the `unsortedLogFileNames` method, but sorts the array.
|
|
* The items in the array are sorted by creation date.
|
|
* The first item in the array will be the most recently created log file.
|
|
**/
|
|
@property (nonatomic, readonly, strong) NSArray<NSString *> *sortedLogFileNames;
|
|
|
|
/**
|
|
* Just like the `unsortedLogFileInfos` method, but sorts the array.
|
|
* The items in the array are sorted by creation date.
|
|
* The first item in the array will be the most recently created log file.
|
|
**/
|
|
@property (nonatomic, readonly, strong) NSArray<DDLogFileInfo *> *sortedLogFileInfos;
|
|
|
|
// Private methods (only to be used by DDFileLogger)
|
|
|
|
/**
|
|
* Generates a new unique log file path, and creates the corresponding log file.
|
|
* This method is executed directly on the file logger's internal queue.
|
|
* The file has to exist by the time the method returns.
|
|
**/
|
|
- (nullable NSString *)createNewLogFileWithError:(NSError **)error;
|
|
|
|
@optional
|
|
|
|
// Private methods (only to be used by DDFileLogger)
|
|
/**
|
|
* Creates a new log file ignoring any errors. Deprecated in favor of `-createNewLogFileWithError:`.
|
|
* Will only be called if `-createNewLogFileWithError:` is not implemented.
|
|
**/
|
|
- (nullable NSString *)createNewLogFile __attribute__((deprecated("Use -createNewLogFileWithError:"))) NS_SWIFT_UNAVAILABLE("Use -createNewLogFileWithError:");
|
|
|
|
// Notifications from DDFileLogger
|
|
|
|
/// Called when a log file was archived. Executed on global queue with default priority.
|
|
/// @param logFilePath The path to the log file that was archived.
|
|
/// @param wasRolled Whether or not the archiving happend after rolling the log file.
|
|
- (void)didArchiveLogFile:(NSString *)logFilePath wasRolled:(BOOL)wasRolled NS_SWIFT_NAME(didArchiveLogFile(atPath:wasRolled:));
|
|
|
|
// Deprecated APIs
|
|
/**
|
|
* Called when a log file was archived. Executed on global queue with default priority.
|
|
*/
|
|
- (void)didArchiveLogFile:(NSString *)logFilePath NS_SWIFT_NAME(didArchiveLogFile(atPath:)) __attribute__((deprecated("Use -didArchiveLogFile:wasRolled:")));
|
|
|
|
/**
|
|
* Called when the roll action was executed and the log was archived.
|
|
* Executed on global queue with default priority.
|
|
*/
|
|
- (void)didRollAndArchiveLogFile:(NSString *)logFilePath NS_SWIFT_NAME(didRollAndArchiveLogFile(atPath:)) __attribute__((deprecated("Use -didArchiveLogFile:wasRolled:")));
|
|
|
|
@end
|
|
|
|
NS_ASSUME_NONNULL_END
|