crashReporter
Envía los informes de fallos a un servidor remoto.
El siguiente es un ejemplo de como configurar Electron para que envié automáticamente reportes de error a un servidor remoto:
const { crashReporter } = require('electron')
crashReporter.start({ submitURL: 'https://your-domain.com/url-to-submit' })
Para configurar un servidor que acepte y procese los informes de fallos, se pueden utilizar los siguientes proyectos:
Note: Electron uses Crashpad, not Breakpad, to collect and upload crashes, but for the time being, the upload protocol is the same.
O utilice una solución alojada por terceros:
Crash reports are stored temporarily before being uploaded in a directory underneath the app's user data directory, called 'Crashpad'. You can override this directory by calling app.setPath('crashDumps', '/path/to/crashes')
before starting the crash reporter.
Electron usa crashpad para controlar e informar de fallos.
Métodos
El módulo crashReporter
tiene los siguientes métodos:
crashReporter.start(options)
Este método debe ser llamada antes de usar cualquier otra APIs crashReporter
. Una vez inicializado de esta manera, el crashpad handler recopila los fallos desde todos los procesos creados posteriormente. El crash reporter no puede ser desactiva una vez iniciado.
Este método debería ser llamado tan pronto como sea posible al iniciar la aplicación, preferentemente antes de app.on('ready')
. Si el crash reporter no está iniciado al tiempo que un renderer process este creado, entonces ese renderer process no será monitoreado por el crash reporter.
Nota: Puedes probar el crash reporter generando un fallo usando process.crash()
.
Nota: Si necesitas enviar parámetros extra
adicionales/actualizados después de tu primera llamada start
puedes llamar a addExtraParameter
.
Nota: Los parámetros pasados en extra
, globalExtra
o establecidos con addExtraParameter
tienen un limite en la longitud de la llaves y los valores. Los nombre de la llaves deben ser como máximo de 39 bytes de largo, y los valores no deben ser mayor que 127 bytes. Las llaves con nombres m ás largo que el máximo serán ignoradas de forma silenciosa. Los valores de las llaves más largo que la longitud máxima serán truncados.
Nota: Este método solo está disponible en el proceso principal.
crashReporter.getLastCrashReport()
Returns CrashReport | null - The date and ID of the last crash report. Solo los reportes de fallos que han sido alzados serán retornados; incluso si un reporte de fallo esta presente en el disco este no sera retornado a menos que este alzado. En caso de que no haya reportes subidos, null
es retornado.
Nota: Este método solo está disponible en el proceso principal.
crashReporter.getUploadedReports()
Devuelve CrashReport[]:
Devuelve todos los informes de error subidos. Cada informe contiene la fecha y el ID con el que son subidos.
Nota: Este método solo está disponible en el proceso principal.
crashReporter.getUploadToServer()
Returns boolean
- Whether reports should be submitted to the server. Set through the start
method or setUploadToServer
.
Nota: Este método solo está disponible en el proceso principal.
crashReporter.setUploadToServer(uploadToServer)
uploadToServer
boolean - Si los reportes deben enviarse o no al servidor.
This would normally be controlled by user preferences. This has no effect if called before start
is called.
Nota: Este método solo está disponible en el proceso principal.
crashReporter.addExtraParameter(clave, valor)
key
string - La clave del parámetro, debe tener menos de 39 bytes.key
string - La clave del parámetro, debe tener menos de 127 bytes.
Establecer un parámetro adicional que se enviará con el informe de fallos. Los valores especificados aquí serán enviados, adicionalmente cualquier valor establecidos a través de la opción extra
cuando fue llamado start
.
Los parámetros agregados de esta manera (o a través del parámetro extra
al crashReporter.start
) son específicos del proceso de llamada. Agregar parámetros extras en el main process no causarán que esos parámetros sean enviado junto con los fallos del renderer u otros procesos hijos. De manera similar, agregar parámetros extras en un renderer process no dará como resultado que esos parámetros sean enviados con los fallos que ocurren en otros renderer processes o en el main process.
Nota: Los parámetros tienen límites de longitud de llaves y valores. Los nombre de la llaves deben ser como máximo de 39 bytes de largo, y los valores no deben ser mayor que 127 bytes. Las llaves con nombres más largo que el máximo serán ignoradas de forma silenciosa. Los valores de las llaves más largo que la longitud máxima serán truncados.
crashReporter.removeExtraParameter(clave)
key
string - La clave del parámetro, debe tener menos de 39 bytes.
Remove an extra parameter from the current set of parameters. Los fallos futuros no incluirán este parámetro.
crashReporter.getParameters()
Devuelve Record<string, string>
- Los parámetros 'extra' actuales del reportador de errores.
In Node child processes
Since require('electron')
is not available in Node child processes, the following APIs are available on the process
object in Node child processes.
process.crashReporter.start(options)
Echa un vistazo a crashReporter.start()
.
Note that if the crash reporter is started in the main process, it will automatically monitor child processes, so it should not be started in the child process. Utilize este método únicamente si el proceso principal no inicializa el crashReporter.
process.crashReporter.getParameters()
Echa un vistazo a crashReporter.getParameters()
.
process.crashReporter.addExtraParameter(key, value)
Echa un vistazo a crashReporter.addExtraParameter(key, value)
.
process.crashReporter.removeExtraParameter(key)
Echa un vistazo a crashReporter.removeExtraParameter(key)
.
Carga útil del informe de fallos
El informador de fallos enviará la siguiente información al submitURL
como un multipart/form-data
POST
:
ver
string - La versión de Electron.platform
string - por ejemplo, "win32".process_type
string - por ejemplo, "renderer".guid
string - por ejemplo, "5e1286fc-da97-479e-918b-6bfb0c3d1c72"._version
string - La versión enpackage.json
._productName
string - El nombre del producto en el objetocrashReporter
options
.prod
string - Nombre del producto subyacente. En esta caso Electron._companyName
string - El nombre de la empresa en el objetocrashReporter
options
.upload_file_minidump
Archivo - El informe de fallos en el formato deminidump
.- Todas las propiedades de nivel uno del objeto
extra
en el objetocrashReporter
options
.