Epub阅读器0.0.1
This commit is contained in:
+158
@@ -0,0 +1,158 @@
|
||||
//
|
||||
// DTLog.h
|
||||
// DTFoundation
|
||||
//
|
||||
// Created by Oliver Drobnik on 06.08.13.
|
||||
// Copyright (c) 2013 Cocoanetics. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
/**
|
||||
Replacement for `NSLog` which can be configured to output certain log levels at run time.
|
||||
*/
|
||||
|
||||
// block signature called for each log statement
|
||||
typedef void (^DTLogBlock)(NSUInteger logLevel, NSString *fileName, NSUInteger lineNumber, NSString *methodName, NSString *format, ...);
|
||||
|
||||
|
||||
// internal variables needed by macros
|
||||
extern DTLogBlock DTLogHandler;
|
||||
extern NSUInteger DTCurrentLogLevel;
|
||||
|
||||
/**
|
||||
There is a macro for each ASL log level:
|
||||
|
||||
- DTLogEmergency (0)
|
||||
- DTLogAlert (1)
|
||||
- DTLogCritical (2)
|
||||
- DTLogError (3)
|
||||
- DTLogWarning (4)
|
||||
- DTLogNotice (5)
|
||||
- DTLogInfo (6)
|
||||
- DTLogDebug (7)
|
||||
*/
|
||||
|
||||
/**
|
||||
Constants for log levels used by DTLog
|
||||
*/
|
||||
typedef NS_ENUM(NSUInteger, DTLogLevel)
|
||||
{
|
||||
/**
|
||||
Log level for *emergency* messages
|
||||
*/
|
||||
DTLogLevelEmergency = 0,
|
||||
|
||||
/**
|
||||
Log level for *alert* messages
|
||||
*/
|
||||
DTLogLevelAlert = 1,
|
||||
|
||||
/**
|
||||
Log level for *critical* messages
|
||||
*/
|
||||
DTLogLevelCritical = 2,
|
||||
|
||||
/**
|
||||
Log level for *error* messages
|
||||
*/
|
||||
DTLogLevelError = 3,
|
||||
|
||||
/**
|
||||
Log level for *warning* messages
|
||||
*/
|
||||
DTLogLevelWarning = 4,
|
||||
|
||||
/**
|
||||
Log level for *notice* messages
|
||||
*/
|
||||
DTLogLevelNotice = 5,
|
||||
|
||||
/**
|
||||
Log level for *info* messages. This is the default log level for DTLog.
|
||||
*/
|
||||
DTLogLevelInfo = 6,
|
||||
|
||||
/**
|
||||
Log level for *debug* messages
|
||||
*/
|
||||
DTLogLevelDebug = 7
|
||||
};
|
||||
|
||||
/**
|
||||
@name Logging Functions
|
||||
*/
|
||||
|
||||
/**
|
||||
Sets the block to be executed for messages with a log level less or equal the currently set log level
|
||||
@param handler The block to handle log output
|
||||
*/
|
||||
void DTLogSetLoggerBlock(DTLogBlock handler);
|
||||
|
||||
/**
|
||||
Modifies the current log level
|
||||
@param logLevel The ASL log level (0-7) to set, lower numbers being more important
|
||||
*/
|
||||
void DTLogSetLogLevel(NSUInteger logLevel);
|
||||
|
||||
/**
|
||||
Variant of DTLogMessage that takes a va_list.
|
||||
@param logLevel The DTLogLevel for the message
|
||||
@param format The log message format
|
||||
@param args The va_list of arguments
|
||||
*/
|
||||
void DTLogMessagev(DTLogLevel logLevel, NSString *format, va_list args);
|
||||
|
||||
/**
|
||||
Same as `NSLog` but allows for setting a message log level
|
||||
@param logLevel The DTLogLevel for the message
|
||||
@param format The log message format and optional variables
|
||||
*/
|
||||
void DTLogMessage(DTLogLevel logLevel, NSString *format, ...);
|
||||
|
||||
/**
|
||||
Retrieves the log messages currently available for the running app
|
||||
@returns an `NSArray` of `NSDictionary` entries
|
||||
*/
|
||||
NSArray *DTLogGetMessages(void);
|
||||
|
||||
/**
|
||||
@name Macros
|
||||
*/
|
||||
|
||||
// log macro for error level (0)
|
||||
#define DTLogEmergency(format, ...) DTLogCallHandlerIfLevel(DTLogLevelEmergency, format, ##__VA_ARGS__)
|
||||
|
||||
// log macro for error level (1)
|
||||
#define DTLogAlert(format, ...) DTLogCallHandlerIfLevel(DTLogLevelAlert, format, ##__VA_ARGS__)
|
||||
|
||||
// log macro for error level (2)
|
||||
#define DTLogCritical(format, ...) DTLogCallHandlerIfLevel(DTLogLevelCritical, format, ##__VA_ARGS__)
|
||||
|
||||
// log macro for error level (3)
|
||||
#define DTLogError(format, ...) DTLogCallHandlerIfLevel(DTLogLevelError, format, ##__VA_ARGS__)
|
||||
|
||||
// log macro for error level (4)
|
||||
#define DTLogWarning(format, ...) DTLogCallHandlerIfLevel(DTLogLevelWarning, format, ##__VA_ARGS__)
|
||||
|
||||
// log macro for error level (5)
|
||||
#define DTLogNotice(format, ...) DTLogCallHandlerIfLevel(DTLogLevelNotice, format, ##__VA_ARGS__)
|
||||
|
||||
// log macro for info level (6)
|
||||
#define DTLogInfo(format, ...) DTLogCallHandlerIfLevel(DTLogLevelInfo, format, ##__VA_ARGS__)
|
||||
|
||||
// log macro for debug level (7)
|
||||
#define DTLogDebug(format, ...) DTLogCallHandlerIfLevel(DTLogLevelDebug, format, ##__VA_ARGS__)
|
||||
|
||||
// macro that gets called by individual level macros
|
||||
#define DTLogCallHandlerIfLevel(logLevel, format, ...) \
|
||||
if (DTLogHandler && DTCurrentLogLevel>=logLevel) DTLogHandler(logLevel, DTLogSourceFileName, DTLogSourceLineNumber, DTLogSourceMethodName, format, ##__VA_ARGS__)
|
||||
|
||||
// helper to get the current source file name as NSString
|
||||
#define DTLogSourceFileName [[NSString stringWithUTF8String:__FILE__] lastPathComponent]
|
||||
|
||||
// helper to get current method name
|
||||
#define DTLogSourceMethodName [NSString stringWithUTF8String:__PRETTY_FUNCTION__]
|
||||
|
||||
// helper to get current line number
|
||||
#define DTLogSourceLineNumber __LINE__
|
||||
Reference in New Issue
Block a user