crashReporter
クラッシュレポートをリモートサーバーに送信します。
以下は、クラッシュレポートをリモートサーバーに自動的に送信するようにElectronを設定する例です
const { crashReporter } = require('electron')
crashReporter.start({ submitURL: 'https://your-domain.com/url-to-submit' })
クラッシュレポートを受け入れて処理するサーバーをセットアップするには、次のプロジェクトを使用できます
注: Electronはクラッシュの収集とアップロードにBreakpadではなくCrashpadを使用しますが、当面の間、アップロードプロトコルは同じです。
または、サードパーティがホストするソリューションを使用してください
クラッシュレポートは、アップロードされる前に、アプリのユーザーデータディレクトリの下にある'Crashpad'というディレクトリに一時的に保存されます。クラッシュレポーターを開始する前に、app.setPath('crashDumps', '/path/to/crashes')を呼び出すことで、このディレクトリをオーバーライドできます。
Electronは、クラッシュを監視および報告するためにcrashpadを使用します。
メソッド
crashReporterモジュールには、次のメソッドがあります
crashReporter.start(options)
このメソッドは、他のcrashReporter APIを使用する前に呼び出す必要があります。このように初期化されると、crashpadハンドラーは後続で作成されたすべてのプロセスからクラッシュを収集します。クラッシュレポーターは、一度開始すると無効にできません。
このメソッドは、アプリの起動時にできるだけ早く、できればapp.on('ready')の前に呼び出す必要があります。レンダラープロセスが作成されたときにクラッシュレポーターが初期化されていない場合、そのレンダラープロセスはクラッシュレポーターによって監視されません。
注: process.crash()を使用してクラッシュを生成することで、クラッシュレポーターをテストできます。
注: 最初の呼び出しstartの後に追加/更新されたextraパラメーターを送信する必要がある場合は、addExtraParameterを呼び出すことができます。
注: extra、globalExtraで渡されるパラメーター、またはaddExtraParameterで設定されるパラメーターには、キーと値の長さの制限があります。キー名は最大39バイト、値は最大127バイトである必要があります。最大長を超える名前のキーは、黙って無視されます。最大長を超えるキー値は切り捨てられます。
注: このメソッドは、メインプロセスでのみ使用できます。
crashReporter.getLastCrashReport()
CrashReport | null を返します - 最後のクラッシュレポートの日付とID。アップロードされたクラッシュレポートのみが返されます。クラッシュレポートがディスクに存在する場合でも、アップロードされるまでは返されません。アップロードされたレポートがない場合は、nullが返されます。
注: このメソッドは、メインプロセスでのみ使用できます。
crashReporter.getUploadedReports()
CrashReport[] を返します
アップロードされたすべてのクラッシュレポートを返します。各レポートには、日付とアップロードされたIDが含まれています。
注: このメソッドは、メインプロセスでのみ使用できます。
crashReporter.getUploadToServer()
boolean を返します - レポートをサーバーに送信するかどうか。startメソッドまたはsetUploadToServerを介して設定されます。
注: このメソッドは、メインプロセスでのみ使用できます。
crashReporter.setUploadToServer(uploadToServer)
uploadToServerboolean - レポートをサーバーに送信するかどうか。
これは通常、ユーザー設定によって制御されます。 startが呼び出される前に呼び出された場合、効果はありません。
注: このメソッドは、メインプロセスでのみ使用できます。
crashReporter.addExtraParameter(key, value)
keystring - パラメーターキー、39バイト以下である必要があります。valuestring - パラメーター値、127バイト以下である必要があります。
クラッシュレポートとともに送信される追加のパラメーターを設定します。ここで指定された値は、startが呼び出されたときにextraオプションを介して設定された値に追加されて送信されます。
この方法で追加されたパラメーター(またはcrashReporter.startへのextraパラメーターを介して)は、呼び出しプロセスに固有のものです。メインプロセスで追加のパラメーターを追加しても、レンダラーまたはその他の子プロセスからのクラッシュとともにそれらのパラメーターが送信されることはありません。同様に、レンダラープロセスで追加のパラメーターを追加しても、他のレンダラープロセスまたはメインプロセスで発生するクラッシュとともにそれらのパラメーターが送信されることはありません。
注: パラメーターには、キーと値の長さの制限があります。キー名は39バイト以下、値は20320バイト以下である必要があります。最大長を超える名前のキーは、黙って無視されます。最大長を超えるキー値は切り捨てられます。
crashReporter.removeExtraParameter(key)
keystring - パラメーターキー、39バイト以下である必要があります。
現在のパラメーターセットから追加のパラメーターを削除します。今後のクラッシュには、このパラメーターは含まれません。
crashReporter.getParameters()
Record<string, string> を返します - クラッシュレポーターの現在の「extra」パラメーター。
Nodeの子プロセス内
Nodeの子プロセスではrequire('electron')が使用できないため、Nodeの子プロセスのprocessオブジェクトで次のAPIを使用できます。
process.crashReporter.start(options)
crashReporter.start()を参照してください。
クラッシュレポーターがメインプロセスで開始された場合、子プロセスを自動的に監視するため、子プロセスで開始すべきではないことに注意してください。このメソッドは、メインプロセスがクラッシュレポーターを初期化しない場合にのみ使用してください。
process.crashReporter.getParameters()
crashReporter.getParameters() を参照してください。
process.crashReporter.addExtraParameter(key, value)
crashReporter.addExtraParameter(key, value) を参照してください。
process.crashReporter.removeExtraParameter(key)
crashReporter.removeExtraParameter(key) を参照してください。
クラッシュレポートのペイロード
クラッシュレポーターは、以下のデータを multipart/form-data の POST として submitURL に送信します。
verstring - Electron のバージョン。platformstring - 例: 'win32'。process_typestring - 例: 'renderer'。guidstring - 例: '5e1286fc-da97-479e-918b-6bfb0c3d1c72'。_versionstring -package.jsonのバージョン。_productNamestring -crashReporterのoptionsオブジェクトの製品名。prodstring - 基盤となる製品の名前。この場合は Electron。_companyNamestring -crashReporterのoptionsオブジェクトの会社名。upload_file_minidumpFile -minidump形式のクラッシュレポート。crashReporterのoptionsオブジェクトのextraオブジェクトのすべてのトップレベルプロパティ。