- Update
This commit is contained in:
1 parent
d281d765ea
commit
5b074a5176
1261 files changed
+199158
-7303
No files matched your search
@@ -0,0 +1,191 @@
|
||||
/**
|
||||
* In order to provide fast and flexible logging, this project uses Cocoa Lumberjack.
|
||||
*
|
||||
* The GitHub project page has a wealth of documentation if you have any questions.
|
||||
* https://github.com/robbiehanson/CocoaLumberjack
|
||||
*
|
||||
* Here's what you need to know concerning how logging is setup for XMPPFramework:
|
||||
*
|
||||
* There are 4 log levels:
|
||||
* - Error
|
||||
* - Warning
|
||||
* - Info
|
||||
* - Verbose
|
||||
*
|
||||
* In addition to this, there is a Trace flag that can be enabled.
|
||||
* When tracing is enabled, it spits out the methods that are being called.
|
||||
*
|
||||
* Please note that tracing is separate from the log levels.
|
||||
* For example, one could set the log level to warning, and enable tracing.
|
||||
*
|
||||
* All logging is asynchronous, except errors.
|
||||
* To use logging within your own custom files, follow the steps below.
|
||||
*
|
||||
* Step 1:
|
||||
* Import this header in your implementation file:
|
||||
*
|
||||
* #import "XMPPLogging.h"
|
||||
*
|
||||
* Step 2:
|
||||
* Define your logging level in your implementation file:
|
||||
*
|
||||
* // Log levels: off, error, warn, info, verbose
|
||||
* static const int xmppLogLevel = XMPP_LOG_LEVEL_VERBOSE;
|
||||
*
|
||||
* If you wish to enable tracing, you could do something like this:
|
||||
*
|
||||
* // Log levels: off, error, warn, info, verbose
|
||||
* static const int xmppLogLevel = XMPP_LOG_LEVEL_INFO | XMPP_LOG_FLAG_TRACE;
|
||||
*
|
||||
* Step 3:
|
||||
* Replace your NSLog statements with XMPPLog statements according to the severity of the message.
|
||||
*
|
||||
* NSLog(@"Fatal error, no dohickey found!"); -> XMPPLogError(@"Fatal error, no dohickey found!");
|
||||
*
|
||||
* XMPPLog has the same syntax as NSLog.
|
||||
* This means you can pass it multiple variables just like NSLog.
|
||||
*
|
||||
* You may optionally choose to define different log levels for debug and release builds.
|
||||
* You can do so like this:
|
||||
*
|
||||
* // Log levels: off, error, warn, info, verbose
|
||||
* #if DEBUG
|
||||
* static const int xmppLogLevel = XMPP_LOG_LEVEL_VERBOSE;
|
||||
* #else
|
||||
* static const int xmppLogLevel = XMPP_LOG_LEVEL_WARN;
|
||||
* #endif
|
||||
*
|
||||
* Xcode projects created with Xcode 4 automatically define DEBUG via the project's preprocessor macros.
|
||||
* If you created your project with a previous version of Xcode, you may need to add the DEBUG macro manually.
|
||||
**/
|
||||
|
||||
#import "CocoaLumberJack/DDLog.h"
|
||||
|
||||
// Global flag to enable/disable logging throughout the entire xmpp framework.
|
||||
|
||||
#ifndef XMPP_LOGGING_ENABLED
|
||||
#define XMPP_LOGGING_ENABLED 1
|
||||
#endif
|
||||
|
||||
// Define logging context for every log message coming from the XMPP framework.
|
||||
// The logging context can be extracted from the DDLogMessage from within the logging framework.
|
||||
// This gives loggers, formatters, and filters the ability to optionally process them differently.
|
||||
|
||||
#define XMPP_LOG_CONTEXT 5222
|
||||
|
||||
// Configure log levels.
|
||||
|
||||
#define XMPP_LOG_FLAG_ERROR (1 << 0) // 0...00001
|
||||
#define XMPP_LOG_FLAG_WARN (1 << 1) // 0...00010
|
||||
#define XMPP_LOG_FLAG_INFO (1 << 2) // 0...00100
|
||||
#define XMPP_LOG_FLAG_VERBOSE (1 << 3) // 0...01000
|
||||
|
||||
#define XMPP_LOG_LEVEL_OFF 0 // 0...00000
|
||||
#define XMPP_LOG_LEVEL_ERROR (XMPP_LOG_LEVEL_OFF | XMPP_LOG_FLAG_ERROR) // 0...00001
|
||||
#define XMPP_LOG_LEVEL_WARN (XMPP_LOG_LEVEL_ERROR | XMPP_LOG_FLAG_WARN) // 0...00011
|
||||
#define XMPP_LOG_LEVEL_INFO (XMPP_LOG_LEVEL_WARN | XMPP_LOG_FLAG_INFO) // 0...00111
|
||||
#define XMPP_LOG_LEVEL_VERBOSE (XMPP_LOG_LEVEL_INFO | XMPP_LOG_FLAG_VERBOSE) // 0...01111
|
||||
|
||||
// Setup fine grained logging.
|
||||
// The first 4 bits are being used by the standard log levels (0 - 3)
|
||||
//
|
||||
// We're going to add tracing, but NOT as a log level.
|
||||
// Tracing can be turned on and off independently of log level.
|
||||
|
||||
#define XMPP_LOG_FLAG_TRACE (1 << 4) // 0...10000
|
||||
|
||||
// Setup the usual boolean macros.
|
||||
|
||||
#define XMPP_LOG_ERROR (xmppLogLevel & XMPP_LOG_FLAG_ERROR)
|
||||
#define XMPP_LOG_WARN (xmppLogLevel & XMPP_LOG_FLAG_WARN)
|
||||
#define XMPP_LOG_INFO (xmppLogLevel & XMPP_LOG_FLAG_INFO)
|
||||
#define XMPP_LOG_VERBOSE (xmppLogLevel & XMPP_LOG_FLAG_VERBOSE)
|
||||
#define XMPP_LOG_TRACE (xmppLogLevel & XMPP_LOG_FLAG_TRACE)
|
||||
|
||||
// Configure asynchronous logging.
|
||||
// We follow the default configuration,
|
||||
// but we reserve a special macro to easily disable asynchronous logging for debugging purposes.
|
||||
|
||||
#if DEBUG
|
||||
#define XMPP_LOG_ASYNC_ENABLED NO
|
||||
#else
|
||||
#define XMPP_LOG_ASYNC_ENABLED YES
|
||||
#endif
|
||||
|
||||
#define XMPP_LOG_ASYNC_ERROR ( NO && XMPP_LOG_ASYNC_ENABLED)
|
||||
#define XMPP_LOG_ASYNC_WARN (YES && XMPP_LOG_ASYNC_ENABLED)
|
||||
#define XMPP_LOG_ASYNC_INFO (YES && XMPP_LOG_ASYNC_ENABLED)
|
||||
#define XMPP_LOG_ASYNC_VERBOSE (YES && XMPP_LOG_ASYNC_ENABLED)
|
||||
#define XMPP_LOG_ASYNC_TRACE (YES && XMPP_LOG_ASYNC_ENABLED)
|
||||
|
||||
// Define logging primitives.
|
||||
// These are primarily wrappers around the macros defined in Lumberjack's DDLog.h header file.
|
||||
|
||||
#define XMPP_LOG_OBJC_MAYBE(async, lvl, flg, ctx, frmt, ...) \
|
||||
do{ if(XMPP_LOGGING_ENABLED) LOG_MAYBE(async, lvl, flg, ctx, sel_getName(_cmd), frmt, ##__VA_ARGS__); } while(0)
|
||||
|
||||
#define XMPP_LOG_C_MAYBE(async, lvl, flg, ctx, frmt, ...) \
|
||||
do{ if(XMPP_LOGGING_ENABLED) LOG_MAYBE(async, lvl, flg, ctx, __FUNCTION__, frmt, ##__VA_ARGS__); } while(0)
|
||||
|
||||
|
||||
#define XMPPLogError(frmt, ...) XMPP_LOG_OBJC_MAYBE(XMPP_LOG_ASYNC_ERROR, xmppLogLevel, XMPP_LOG_FLAG_ERROR, \
|
||||
XMPP_LOG_CONTEXT, frmt, ##__VA_ARGS__)
|
||||
|
||||
#define XMPPLogWarn(frmt, ...) XMPP_LOG_OBJC_MAYBE(XMPP_LOG_ASYNC_WARN, xmppLogLevel, XMPP_LOG_FLAG_WARN, \
|
||||
XMPP_LOG_CONTEXT, frmt, ##__VA_ARGS__)
|
||||
|
||||
#define XMPPLogInfo(frmt, ...) XMPP_LOG_OBJC_MAYBE(XMPP_LOG_ASYNC_INFO, xmppLogLevel, XMPP_LOG_FLAG_INFO, \
|
||||
XMPP_LOG_CONTEXT, frmt, ##__VA_ARGS__)
|
||||
|
||||
#define XMPPLogVerbose(frmt, ...) XMPP_LOG_OBJC_MAYBE(XMPP_LOG_ASYNC_VERBOSE, xmppLogLevel, XMPP_LOG_FLAG_VERBOSE, \
|
||||
XMPP_LOG_CONTEXT, frmt, ##__VA_ARGS__)
|
||||
|
||||
#define XMPPLogTrace() XMPP_LOG_OBJC_MAYBE(XMPP_LOG_ASYNC_TRACE, xmppLogLevel, XMPP_LOG_FLAG_TRACE, \
|
||||
XMPP_LOG_CONTEXT, @"%@: %@", THIS_FILE, THIS_METHOD)
|
||||
|
||||
#define XMPPLogTrace2(frmt, ...) XMPP_LOG_OBJC_MAYBE(XMPP_LOG_ASYNC_TRACE, xmppLogLevel, XMPP_LOG_FLAG_TRACE, \
|
||||
XMPP_LOG_CONTEXT, frmt, ##__VA_ARGS__)
|
||||
|
||||
|
||||
#define XMPPLogCError(frmt, ...) XMPP_LOG_C_MAYBE(XMPP_LOG_ASYNC_ERROR, xmppLogLevel, XMPP_LOG_FLAG_ERROR, \
|
||||
XMPP_LOG_CONTEXT, frmt, ##__VA_ARGS__)
|
||||
|
||||
#define XMPPLogCWarn(frmt, ...) XMPP_LOG_C_MAYBE(XMPP_LOG_ASYNC_WARN, xmppLogLevel, XMPP_LOG_FLAG_WARN, \
|
||||
XMPP_LOG_CONTEXT, frmt, ##__VA_ARGS__)
|
||||
|
||||
#define XMPPLogCInfo(frmt, ...) XMPP_LOG_C_MAYBE(XMPP_LOG_ASYNC_INFO, xmppLogLevel, XMPP_LOG_FLAG_INFO, \
|
||||
XMPP_LOG_CONTEXT, frmt, ##__VA_ARGS__)
|
||||
|
||||
#define XMPPLogCVerbose(frmt, ...) XMPP_LOG_C_MAYBE(XMPP_LOG_ASYNC_VERBOSE, xmppLogLevel, XMPP_LOG_FLAG_VERBOSE, \
|
||||
XMPP_LOG_CONTEXT, frmt, ##__VA_ARGS__)
|
||||
|
||||
#define XMPPLogCTrace() XMPP_LOG_C_MAYBE(XMPP_LOG_ASYNC_TRACE, xmppLogLevel, XMPP_LOG_FLAG_TRACE, \
|
||||
XMPP_LOG_CONTEXT, @"%@: %s", THIS_FILE, __FUNCTION__)
|
||||
|
||||
#define XMPPLogCTrace2(frmt, ...) XMPP_LOG_C_MAYBE(XMPP_LOG_ASYNC_TRACE, xmppLogLevel, XMPP_LOG_FLAG_TRACE, \
|
||||
XMPP_LOG_CONTEXT, frmt, ##__VA_ARGS__)
|
||||
|
||||
// Setup logging for XMPPStream (and subclasses such as XMPPStreamFacebook)
|
||||
|
||||
#define XMPP_LOG_FLAG_SEND (1 << 5)
|
||||
#define XMPP_LOG_FLAG_RECV_PRE (1 << 6) // Prints data before it goes to the parser
|
||||
#define XMPP_LOG_FLAG_RECV_POST (1 << 7) // Prints data as it comes out of the parser
|
||||
|
||||
#define XMPP_LOG_FLAG_SEND_RECV (XMPP_LOG_FLAG_SEND | XMPP_LOG_FLAG_RECV_POST)
|
||||
|
||||
#define XMPP_LOG_SEND (xmppLogLevel & XMPP_LOG_FLAG_SEND)
|
||||
#define XMPP_LOG_RECV_PRE (xmppLogLevel & XMPP_LOG_FLAG_RECV_PRE)
|
||||
#define XMPP_LOG_RECV_POST (xmppLogLevel & XMPP_LOG_FLAG_RECV_POST)
|
||||
|
||||
#define XMPP_LOG_ASYNC_SEND (YES && XMPP_LOG_ASYNC_ENABLED)
|
||||
#define XMPP_LOG_ASYNC_RECV_PRE (YES && XMPP_LOG_ASYNC_ENABLED)
|
||||
#define XMPP_LOG_ASYNC_RECV_POST (YES && XMPP_LOG_ASYNC_ENABLED)
|
||||
|
||||
#define XMPPLogSend(format, ...) XMPP_LOG_OBJC_MAYBE(XMPP_LOG_ASYNC_SEND, xmppLogLevel, \
|
||||
XMPP_LOG_FLAG_SEND, XMPP_LOG_CONTEXT, format, ##__VA_ARGS__)
|
||||
|
||||
#define XMPPLogRecvPre(format, ...) XMPP_LOG_OBJC_MAYBE(XMPP_LOG_ASYNC_RECV_PRE, xmppLogLevel, \
|
||||
XMPP_LOG_FLAG_RECV_PRE, XMPP_LOG_CONTEXT, format, ##__VA_ARGS__)
|
||||
|
||||
#define XMPPLogRecvPost(format, ...) XMPP_LOG_OBJC_MAYBE(XMPP_LOG_ASYNC_RECV_POST, xmppLogLevel, \
|
||||
XMPP_LOG_FLAG_RECV_POST, XMPP_LOG_CONTEXT, format, ##__VA_ARGS__)
|
||||
Reference in new issue
Block a user