私はDDLog.h
ファイルの答えを見つけました。 Lumberjackには、非同期ロギングと同期ロギングという概念があります。最初の読書では、これが何のために私をヒットしなかった。
基本的には、ログ・ステートメントを順番に出力したい場合は、同期をとる必要があります(ただし、Mikeが述べたように、パフォーマンスが低下します)。したがって、これはデバッグの状況でのみ行う必要があります。理想的には、私は別のヘッダーを一緒に入れて、そして/または他のプリプロセッサマクロを入れて、スイッチを同期させたままにしないようにします。ここで
は、あなたが何をすべきかです:
- は
#define LOG_ASYNC_ENABLED YES
とラインにDDLog.h
- Go]を開きます。これを1つの場所で
NO
に変更して、ボード全体にわたる同期ロギングを行うことも、個々のレベルを変更することもできます。
ヘッダーは、DDLog.hファイル自体の変更を避けることに注意してください。したがって、Lumberjack wikiページlinkの指示に従って、別のヘッダーファイルを使用してこれらのオーバーライドのカスタマイズを明示する方法を説明します。
#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
ありがとうございました。これは賢明な仮定だった。残念ながら、それは動作しませんでした。私もstdoutをフラッシュしようとしましたが、どちらもうまくいきませんでした(これは意味があります - 全メソッドがstderrに出力を積み上げているようです)。 – idStar