Defines

CC3Logging.h File Reference

Defines

#define LOGGING_ENABLED   0
#define LOGGING_INCLUDE_CODE_LOCATION   0
#define LOGGING_LEVEL_TRACE   0

Detailed Description


Define Documentation

#define LOGGING_ENABLED   0

For Objective-C code, this library adds flexible, non-intrusive logging capabilities that can be efficiently enabled or disabled via compile switches.

There are four levels of logging: Trace, Info, Error and Debug, and each can be enabled independently via the LOGGING_LEVEL_TRACE, LOGGING_LEVEL_INFO, LOGGING_LEVEL_ERROR and LOGGING_LEVEL_DEBUG switches, respectively.

In addition, there are the following specialized logging switches that can be turned on to assist with diagnostics and troubleshooting:

LOGGING_REZLOAD - output log messages during 3D model resource loading

ALL logging can be enabled or disabled via the LOGGING_ENABLED switch.

Logging functions are implemented here via macros. Disabling logging, either entirely, or at a specific level, completely removes the corresponding log invocations from the compiled code, thus eliminating both the memory and CPU overhead that the logging calls would add. You might choose, for example, to completely remove all logging from production release code, by setting LOGGING_ENABLED off in your production builds settings. Or, as another example, you might choose to include Error logging in your production builds by turning only LOGGING_ENABLED and LOGGING_LEVEL_ERROR on, and turning the others off.

To perform logging, use any of the following function calls in your code:

LogTrace(fmt, ...) - recommended for detailed tracing of program flow

  • will print if LOGGING_LEVEL_TRACE is set on. LogCleanTrace(fmt, ...) - as above but does not print standard timestamp and app context preamble

LogInfo(fmt, ...) - recommended for general, infrequent, information messages

  • will print if LOGGING_LEVEL_INFO is set on. LogCleanInfo(fmt, ...) - as above but does not print standard timestamp and app context preamble

LogError(fmt, ...) - recommended for use only when there is an error to be logged

  • will print if LOGGING_LEVEL_ERROR is set on. LogCleanError(fmt, ...) - as above but does not print standard timestamp and app context preamble

LogDebug(fmt, ...) - recommended for temporary use during debugging

  • will print if LOGGING_LEVEL_DEBUG is set on. LogCleanDebug(fmt, ...) - as above but does not print standard timestamp and app context preamble

LogRez(fmt, ...) - recommended for temporary use during development

  • will print if LOGGING_REZLOAD is set on. LogCleanRez(fmt, ...) - as above but does not print standard timestamp and app context preamble

In each case, the functions follow the general NSLog/printf template, where the first argument "fmt" is an NSString that optionally includes embedded Format Specifiers, and subsequent optional arguments indicate data to be formatted and inserted into the string. As with NSLog, the number of optional arguments must match the number of embedded Format Specifiers. For more info, see the core documentation for NSLog and String Format Specifiers.

You can choose to have each logging entry automatically include class, method and line information by enabling the LOGGING_INCLUDE_CODE_LOCATION switch.

Although you can directly edit this file to turn on or off the switches below, the preferred technique is to set these switches via the compiler build setting GCC_PREPROCESSOR_DEFINITIONS in your build configuration. Set this switch to enable or disable logging capabilities. This can be set either here or via the compiler build setting GCC_PREPROCESSOR_DEFINITIONS in your build configuration. Using the compiler build setting is preferred for this to ensure that logging is not accidentally left enabled by accident in release builds.

#define LOGGING_INCLUDE_CODE_LOCATION   0

Set this switch to indicate whether or not to include class, method and line information in the log entries.

This can be set either here or as a compiler build setting.

#define LOGGING_LEVEL_TRACE   0

Set any or all of these switches to enable or disable logging at specific levels.

These can be set either here or as a compiler build settings. For these settings to be effective, LOGGING_ENABLED must also be defined and non-zero.