Log & Crash Searchで発行されたAppKeyをProjectKeyに設定します。
...
#include "NHNCloudLogger.h"
nhncloud::logger::NHNCloudLogger* g_nhncloud_lnc = nullptr; // NHN Cloud SDK - Log & crash search
...
// グローバル変数にNHN Cloud SDKインスタンスを割り当てます。
g_nhncloud_lnc = nhncloud::logger::NHNCloudLogger::GetInstance();
// NHNCloudLoggerを初期化する時、必要な設定情報を入力します。
nhncloud::logger::NHNCloudLoggerConfiguration* loggerConf = nhncloud::logger::NHNCloudLoggerConfiguration::GetInstance();
...
// Log & Crash Searchコンソールで確認したアプリケーションキーを入力します。
loggerConf->setProjectKey(appkey);
// 現在アプリケーションのバージョン情報を入力します。バージョン情報はシンボルファイルを登録する過程で入力するバージョン情報と一致する必要があります。
loggerConf->setProjectVersion(version);
...
if (!g_nhncloud_lnc->initialize(loggerConf))
{
// すでに初期化されているか、アプリケーションキーを入力していない場合に初期化が失敗します。
::MessageBox(g_mainWnd, _T("Failed to initialize NHN Cloud SDK."), _T("Alert"), MB_OK);
return false;
}
ユーザーIDを設定できます。 UserIDを設定すると、ログ送信APIを呼び出した時に、ログと一緒にユーザーIDもサーバーに送信します。 ユーザーIDは初期化前後に関係なく設定できます。
nhncloud::logger::NHNCloudLogger* pLogger = nhncloud::logger::NHNCloudLogger::GetInstance();
pLogger->setUserId(pUserID);
pLogger->getUserId();
NHN Cloud Loggerは、5つのレベルのログ送信関数を提供します。
void debug(const wchar_t* message, NHNCloudLoggerUserFields* userFields = NULL);
void info(const wchar_t* message, NHNCloudLoggerUserFields* userFields = NULL);
void warn(const wchar_t* message, NHNCloudLoggerUserFields* userFields = NULL);
void error(const wchar_t* message, NHNCloudLoggerUserFields* userFields = NULL);
void fatal(const wchar_t* message, NHNCloudLoggerUserFields* userFields = NULL);
void log(NHNCLOUD_LOGGER_LEVEL logLevel, const char* message, NHNCloudLoggerUserFields* userFields = nullptr);
bool addUserField(const char* key, const wchar_t* value);
void removeUserField(const char* key);
void clearUserFileds();
...
g_nhncloud_lnc->addUserField("nickname", "randy");
g_nhncloud_lnc->removeUserField("nickname");
g_nhncloud_lnc->cleareUserField();
nhncloud::logger::NHNCloudLoggerUserFields* pUserFieldHelper = nhncloud::logger::NHNCloudLoggerUserFields::GetInstance(); // ユーザー定義フィールドヘルパークラスを取得します。
pUserFieldHelper->insert("userCustomKeyHelper01", L"NHNCloudLoggerUserFieldsヘルパークラスに追加したユーザー定義フィールド\r\nCustom fields added with the NHNCloudLoggerUserFields helper class");
pUserFieldHelper->insert("userCustomKeyHelper02", L"clear()関数で今まで定義したユーザーフィールドを簡単に整理できます。\r\nWith the clear() function, you can simply clear the custom fields you have defined so far.");
pUserFieldHelper->insert("userCustomKeyHelper03", L"log()関数で送信する時、NHNCloudLoggerUserFieldsクラスに定義したユーザーフィールドはログオブジェクトにコピーされます。\r\nWhen sending to the log() function, the user fields defined in the NHNCloudLoggerUserFields class are copied to the log object.");
g_nhncloud_lnc->log(level, pLogMessage, pUserFieldHelper); // ユーザー定義フィールドと一緒にログを送信します。
pUserFieldHelper->clear(); // 上で設定したユーザー定義フィールドをすべて削除します。
#include "NHNCloudLogger.h"
nhncloud::logger::NHNCloudLogger* g_nhncloud_lnc = nullptr; // NHN Cloud SDK - Log & crash search
...
// グローバル変数にNHN Cloud SDKインスタンスを割り当てます。
g_nhncloud_lnc = nhncloud::logger::NHNCloudLogger::GetInstance();
// NHNCloudLoggerを初期化する時、必要な設定情報を入力します。
nhncloud::logger::NHNCloudLoggerConfiguration* loggerConf = nhncloud::logger::NHNCloudLoggerConfiguration::GetInstance();
...
// Log & Crash Searchコンソールで確認したアプリケーションキーを入力します。
loggerConf->setProjectKey(appkey);
// 現在アプリケーションのバージョン情報を入力します。バージョン情報はシンボルファイルを登録する過程で入力するバージョン情報と一致する必要があります。
loggerConf->setProjectVersion(version);
// クラッシュ収集有効 - 基本的に有効状態です。クラッシュの収集を望まない場合はfalseに設定します。
loggerConf->enableCrashReporter(true);
// 別途のプロセスで動作するクラッシュレポート(CrashReporter.exe)を使用するにはenableSilenceMode(false)に設定します。
loggerConf->enableSilenceMode(false);
// 別途のプロセスで動作するクラッシュレポートに表示するメッセージを定義します。定義しない場合は基本メッセージが表示されます。
loggerConf->setCrashReporterMessage(NHNCLOUD_LANGUAGE_KOREAN, "エラーが発生した状況。\n");
// 別途のプロセスにクラッシュを送信しますが、ユーザーにUIを表示したくない場合はexposeExternalCrashReporterUI(false)に設定します。
//loggerConf->exposeExternalCrashReporterUI(false);
...
// 初期化が終わったら、クラッシュの収集が可能です。
if (!g_nhncloud_lnc->initialize(loggerConf))
{
// すでに初期化されているか、アプリケーションキーを入力していない場合に初期化が失敗します。
::MessageBox(g_mainWnd, _T("Failed to initialize NHN Cloud SDK."), _T("Alert"), MB_OK);
return false;
}
void CsampleDlg::OnBnClickedCrash()
{
// TODO: Add your control notification handler code here
int *i = reinterpret_cast<int*>(0x45);
*i = 5;
}
NHN Cloud Windows SDKで発生したクラッシュを解析するには、シンボルファイルを作成してWebコンソールにアップロードする必要があります。
nhncloudsdk_example
サンプルプロジェクトのビルド後にイベントをご覧ください。dump_syms sample.pdb > sample.sym