DDLog.h
ファイルに答えが見つかりました。Lumberjackには、非同期および同期ロギングの概念があります。最初に読んだとき、これが何のためにあるのかについては私にはわかりませんでした。
基本的に、ログステートメントを順番に出力する場合は、同期させる必要があります(ただし、Mikeが述べたように、これによりパフォーマンスが低下します)。したがって、これはデバッグ状況でのみ実行する必要があります。理想的には、別のヘッダーや他のプリプロセッサマクロを組み合わせて、スイッチを同期としてオンのままにしないようにします。
これがあなたがすることです:
- 開く
DDLog.h
- の行に移動し
#define LOG_ASYNC_ENABLED YES
ます。これをNO
1つの場所に変更して、全面的な同期ロギングを行うか、次の行で個々のレベルを変更することができます。
ヘッダーは、DDLog.hファイル自体の変更を推奨しないことに注意してください。したがって、Lumberjack wikiページのリンクの指示に従って、別のヘッダーファイルを使用してこれらのオーバーライドのカスタマイズを明確にする方法を説明します。
これを使用して、アプリのプリコンパイル済みヘッダーにインポートする「MyAppLumberjack.h」ヘッダーファイルとして、正常に作成およびテストしたものを次に示します。
#import "DDLog.h"
#import "DDASLLogger.h"
#import "DDTTYLogger.h"
// ========================= Overrides ========================================
// --> per https://github.com/robbiehanson/CocoaLumberjack/wiki/CustomLogLevels
// ----------------------------------------------------------------------------
// Are we in an optimized (i.e. Release) build?
#ifdef __OPTIMIZE__
// YES: Nothing to do from the default. (You could simplify this by using #ifndef above instead)
#else
// NO: We're in a Debug build. As such, let's configure logging to flush right away.
// Undefine the asynchronous defaults:
#undef LOG_ASYNC_VERBOSE
#undef LOG_ASYNC_INFO
#undef LOG_ASYNC_WARN
// Define the logs levels to be synchronous:
#define LOG_ASYNC_VERBOSE (NO && LOG_ASYNC_ENABLED) // Debug logging will be synchronous
#define LOG_ASYNC_INFO (NO && LOG_ASYNC_ENABLED) // Info logging will be synchronous
#define LOG_ASYNC_WARN (NO && LOG_ASYNC_ENABLED) // Warn logging will be synchronous
#endif