Log & Crash Searchで発行されたAppKeyをProjectKeyに設定します。
...
#include "toast/ToastLogger.h"
using namespace toast::logger;
...
ToastLogger* logger = GetToastLogger();
ToastLoggerConfiguration* loggerConf = GetToastLoggerConfiguration();
...
loggerConf->setProjectKey(appkey);
loggerConf->setProjectVersion(version);
...
if (_logger != NULL)
{
if (_logger->initialize(loggerConf))
{
// success
}
else
{
// fail
}
}
DestroyToastLogger();
ToastSDKにユーザーIDを設定できます。 設定したUserIDは、ToastSDKの各モジュールで共通で使用されます。 ToastLoggerのログ送信APIを呼び出すたびに、設定したユーザーIDをログと一緒にサーバーに送信します。
ToastLogger* _logger = GetToastLogger();
_logger->setUserId("userId");
_logger->initialize(loggerConf);
_logger->getUserId();
NHN Cloud Loggerは、5つのレベルのログ送信関数を提供します。
// 一般ログ
_logger->log(level, message, _userFieldMap);
// DEBUGレベルのログ
_logger->debug(level, message, _userFieldMap);
// INFOレベルのログ
_logger->info(level, message, _userFieldMap);
// WARNレベルのログ
_logger->warn(String message);
// ERRORレベルのログ
_logger->error(String message);
// FATALレベルのログ
_logger->fatal(String message);
ToastLoggerUserFields* _userFieldMap = CreateToastLoggerUserFields();
_userFieldMap->insert(key, value);
if (_userFieldMap != NULL)
{
if (_userFieldMap->size() > 0)
{
_logger->log(level, message, _userFieldMap);
}
else
{
_logger->log(level, message);
}
}
ToastLoggerUserFieldsは、下記のような関数をサポートします。
ユーザー定義フィールドは、Log & Crash Search > ログ検索をクリックした後、ログ検索画面の選択したフィールドに表示される値と同じです。
_logger->addUserField("nickname", "randy");
_logger->removeUserField("nickname");
_logger->cleareUserField();
クラッシュレポーター(CrashRepoter.exe)は、クラッシュ情報をログに送信する機能を提供します。 クラッシュが発生すると、クラッシュレポーターからクラッシュ情報をログに送信します。 ToastLoggerを初期化する時、クラッシュレポーターを使用するかを設定できます。 クラッシュレポーターダイアログボックスを使用するかどうか、カスタムメッセージを設定できます。
...
#include "toast/ToastLogger.h"
using namespace toast::logger;
...
ToastLogger* _logger = GetToastLogger();
ToastLoggerConfiguration* loggerConf = GetToastLoggerConfiguration();
...
// クラッシュログが有効になっているか
loggerConf->enableCrashReporter(true);
// クラッシュレポーターダイアログを使用するか
loggerConf->enableSilenceMode(false);
// クラッシュレポーターダイアログに表示されるメッセージを定義
// (定義しない場合、基本メッセージが表示される。)
loggerConf->setCrashReporterMessage(TOAST_LANGUAGE_KOREAN, "エラーが発生した状況…\n");
...
if (_logger != NULL)
{
bool bInit = _logger->initialize(loggerConf);
// x86でpure virtual call / invalid paramenterクラッシュログ追加
if (bInit && enableCrashReport)
{
#ifndef _WIN64
SetCrashHandler();
#endif
}
}
void CsampleDlg::OnBnClickedCrash()
{
// TODO: Add your control notification handler code here
int *i = reinterpret_cast<int*>(0x45);
*i = 5;
}
TOAST Windows SDKで発生したクラッシュを解析するには、シンボルファイルを作成してWebコンソールにアップロードする必要があります。
dump_syms sample.pdb > sample.sym