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)
uploadToServer
boolean - レポートをサーバーに送信するかどうか。
これは通常、ユーザー設定によって制御されます。 start
が呼び出される前に呼び出された場合、効果はありません。
注: このメソッドは、メインプロセスでのみ使用できます。
crashReporter.addExtraParameter(key, value)
key
string - パラメーターキー、39バイト以下である必要があります。value
string - パラメーター値、127バイト以下である必要があります。
クラッシュレポートとともに送信される追加のパラメーターを設定します。ここで指定された値は、start
が呼び出されたときにextra
オプションを介して設定された値に追加されて送信されます。
この方法で追加されたパラメーター(またはcrashReporter.start
へのextra
パラメーターを介して)は、呼び出しプロセスに固有のものです。メインプロセスで追加のパラメーターを追加しても、レンダラーまたはその他の子プロセスからのクラッシュとともにそれらのパラメーターが送信されることはありません。同様に、レンダラープロセスで追加のパラメーターを追加しても、他のレンダラープロセスまたはメインプロセスで発生するクラッシュとともにそれらのパラメーターが送信されることはありません。
注: パラメーターには、キーと値の長さの制限があります。キー名は39バイト以下、値は20320バイト以下である必要があります。最大長を超える名前のキーは、黙って無視されます。最大長を超えるキー値は切り捨てられます。
crashReporter.removeExtraParameter(key)
key
string - パラメーターキー、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
に送信します。
ver
string - Electron のバージョン。platform
string - 例: 'win32'。process_type
string - 例: 'renderer'。guid
string - 例: '5e1286fc-da97-479e-918b-6bfb0c3d1c72'。_version
string -package.json
のバージョン。_productName
string -crashReporter
のoptions
オブジェクトの製品名。prod
string - 基盤となる製品の名前。この場合は Electron。_companyName
string -crashReporter
のoptions
オブジェクトの会社名。upload_file_minidump
File -minidump
形式のクラッシュレポート。crashReporter
のoptions
オブジェクトのextra
オブジェクトのすべてのトップレベルプロパティ。