KISS

Keep It Simple Stupid

Global dynamic log level in CocoaLumberjack

| comments

I use CocoaLumberjack for logging in one of the projects. Now the client wants the ability to change the log level at runtime in Settings. The official article (https://github.com/robbiehanson/CocoaLumberjack/wiki/DynamicLogLevels) suggests a simple solution: remove the const modifier from the definition of ddLogLevel, so you change it in runtime. However, if this var is defined in the shared precompiled header (project.pch file), every source code file gets its own copy.

To make it global, here’s my workaround: create a pair of files: AppLogging.h and AppLogging.m. Instead of declaring the ddLogLevel variable in the .pch file, #include the AppLogging.h file, where you move it to:

AppLogging.h
1
extern int ddLogLevel;
AppLogging.m
1
int ddLogLevel = LOG_LEVEL_ERROR;

Now, the whole program has access to this variable, being able to change the log level globally.

iOS

Don't hesitate to leave a comment below. NB! If you don't see a comment form under the post, it's most likely that an extension (such as Ghostery, NoScript, or AdBlock) of your browser blocks the scripts from disqus.com, and you can unblock that.

« Yes. It runs with NetWare Jigsaw puzzle animation »

Comments