0

ログレベルの意味がよくわかりません。

Lumbejack では、次のログ レベルが定義されています。

#define LOG_LEVEL_OFF     DDLogLevelOff
#define LOG_LEVEL_ERROR   DDLogLevelError
#define LOG_LEVEL_WARN    DDLogLevelWarning
#define LOG_LEVEL_INFO    DDLogLevelInfo
#define LOG_LEVEL_DEBUG   DDLogLevelDebug
#define LOG_LEVEL_VERBOSE DDLogLevelVerbose
#define LOG_LEVEL_ALL     DDLogLevelAll

それらのいくつかはどういう意味ですか?そしてそれらはどのように使用されますか?CocoaLumberjack に関連するものはすべて iOS 用ですか?

また、pch ファイルで次のコードを使用します。

#ifdef DEBUG
static const int ddLogLevel = LOG_LEVEL_VERBOSE;
#else
static const int ddLogLevel = LOG_LEVEL_ERROR;
#endif

それらはどういう意味ですか?プロジェクトでddLogLevelvarを検索しましたが、どこにも使用されていませんでした。また、木こりポッドではありません。

4

2 に答える 2

2

さまざまなメソッドddLogLevelから表示されるメッセージにフィルターを設定します。DDLogXXX

に設定ddLogLevelするとLOG_LEVEL_ALL、すべてのDDLogXXXメソッドがログに記録されます。に設定ddLogLevelすると、 、、およびLOG_LEVEL_INFOのみがログに記録されます。InfoWarningError

表示される行のリストを見て#defineください。特定の値を選択すると、そのレベルとリストの上位のメッセージのみが表示されます。

に設定ddLogLevelLOG_LEVEL_INFO、次の 2 行がある場合:

DDLogInfo("some info message");
DDLogDebug("some debug message");

Debugは より小さいため、最初のメッセージのみがログに記録されますInfo

各レベルの実際の意味は、やや主観的なものです。アプリで一貫して使用するだけです。最も重要または重要なメッセージには最高レベルを設定し、重要度の低いメッセージには最低レベルを設定する必要があります。

DDLogErrorアプリで予期しない値が発生した場合、またはNSErrorパラメーターを提供するメソッドが失敗した場合に使用します。関連するメッセージをログに記録し、NSError値を含めます。

DDLogInfo「I'm here」タイプのメッセージに使用します。

DDLogDebug変数値をログに記録するために使用します。

あまり頻繁には使用しませDDLogWarnんが、実際のエラーではなく重要な注意事項があるという予期しない問題に使用できます。

于 2016-11-11T21:27:29.233 に答える
2

これらは、さまざまな程度のログの粒度です。LOG_LEVEL_ALL は、木こりが使用するコンソールとファイルにすべてのログが書き込まれることを意味します。LOG_LEVEL_OFF は、ロギングが行われない極端な例です。これらを使用して、どのビルドに対してどの種類のログを表示するかを決定できます。ユースケースの例をいくつか示します。

- (void)viewDidLoad
{
    [super viewDidLoad];

    // this log isn't particularly useful for a production build, 
    // but can be helpful when debugging. So we use verbose.
    DDLogVerbose(@"This view controller loaded");
}

- (void)didRecieveMemoryWarning
{
    // This is a bad situation, but it isn't an error really.
    // Just a signal that we need to free up memory. So we use warning.
    DDLogWarning(@"We are using too much memory.");
}

- (void)doSomething
{
    NSError *error;
    [self doSomethingElse:&error];
    if (error) {
        // This is definitely an error we need to handle. If you have to
        // look through crash logs on a production build, you definitely
        // want this log to show up there.
        DDLogError(@"Encountered an error: %@", error);
    }
}

これらの例では、Xcode からアプリを実行するとすべてのログが表示されますが、本番環境のクラッシュ ログにはエラー ログのみが表示されます。定数は、ddLogLevel必要なロギングのレベルを決定する方法です。

于 2016-11-11T21:27:47.187 に答える