Saltar al contenido principal

crashReporter

Envía los informes de fallos a un servidor remoto.

Process: Main, Renderer

[!IMPORTANT] If you want to call this API from a renderer process with context isolation enabled, place the API call in your preload script and expose it using the contextBridge API.

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:

[!NOTA] Electron usa Crashpad, no Breakpad, para recoger y subir cierres pero por el momento, el protocolo de subida es el mismo.

O utilice una solución alojada por terceros:

Los informes de cuelgue se almacenan temporalmente antes de ser subidos en un directorio debajo del directorio de datos de usuario de la aplicación, llamado 'Crashpad'. Puedes sobrescribir este directorio llamando a app.setPath('crashDumps', '/path/to/crash') antes de iniciar al informe del cuelgue.

Electron usa crashpad para controlar e informar de fallos.

Métodos

El módulo crashReporter tiene los siguientes métodos:

crashReporter.start(options)

History
Version(s)Changes
None

Opciones rateLimit y compress añadidas.

None

Invocación obsoleta de este método en el proceso renderizador.

None

Valor por defecto de la opción compress cambiada desde false a true.

None

El parámetro submitURL ahora es opcional cuando uploadToServer sea false.

  • options Object
    • submitURL string (opcional) - URL a la que serán enviados los reportes de fallos como POST. Requerido a menos que uploadToServer sea false.
    • productName string (opcional) - Por defecto app.name.
    • companyName string (opcional) Deprecated - Alias obsoleto para { globalExtra: { _companyName: ... } }.
    • uploadToServer boolean (octional) - Si los reportes de fallos deberían ser enviados a un servidor. Si es false, los reportes de fallos serán recolectados y almacenados en un directorio de fallas, pero no serán subidos. Por defecto es true.
    • ignoreSystemCrashHandler boolean (opcional) - Si es true, los fallos generados en el main process no serán reenviados al gestor de fallos del sistema. Por defecto es false.
    • rateLimit boolean (opcional) macOS Windows - Si es true, limita el numero de fallos subidos a 1/hora. Por defecto es false.
    • compress boolean (opcional) - Si es true, los reportes de fallos serán comprimidos y subidos con Content-Encoding: gzip. Por defecto es true.
    • extra Record<string, string> (opcional) - Cadena adicional de anotaciones clave/valor que serán enviadas junto con informes de cuelgue que sean generados en el proceso principal. Sólo se admiten valores de cadena. Cuelgue generado en procesos heredados no incluirán estos parámetros adicionales. Para añadir parámetros adicionales para informes de cuelgue generados desde procesos heredados, invoque addExtraParameter desde el proceso heredado.
    • globalExtra Record<String, String> (opcional) - Extra string con anotaciones clave/valor que serán enviados junto con los reportes de fallos generados en cualquier proceso. Estas anotaciones no pueden ser cambiadas una vez que el crash reporter ha sido iniciado. Si una clave esta presente en los parámetros global extra y en los parámetros extra process-specific, entonces el parámetro global tomará precedencia. Por defecto, productName y la versión de la aplicación son incluidas, así como la versión de Electron.

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 informe del cuelgue generando un cuelgue usando process.crash().

[!NOTA] Si necesitas enviar parámetros extra adicionales/actualizados tras tu primera invocación start puedes invocar a addExtraParameter.

[!NOTA] Los parámetros pasados en extra, globalExtra o establecidos con addExtraParameter tienen límites en la longitud de las claves y los valores. Los nombre de llave 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. Valores claves más largos que la longitud máxima serán truncados.

[!NOTA] Este método solo está disponible en el proceso principal.

crashReporter.getLastCrashReport()

History

Devuelve CrashReport | null - La fecha y el ID del último reporte de error. 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()

History

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()

History

Devuelve boolean - Si los informes serían enviados al servidor. Establecer a través del método start o setUploadToServer.

[!NOTA] Este método solo está disponible en el proceso principal.

crashReporter.setUploadToServer(uploadToServer)

History
  • uploadToServer boolean - Si los reportes deben enviarse o no al servidor.

Esto normalmente sería controlado por las preferencias del usuario. Esto no tiene efecto si invocó antes de invocar start.

[!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 nombres de llave no deben ser más largos que 39 bytes, y los valores deben ser no más largos que 20320 bytes. Las llaves con nombres más largo que el máximo serán ignoradas de forma silenciosa. Los valores de la clave más largos que la longitud máxima serán truncados.

crashReporter.removeExtraParameter(key)

  • key string - La clave del parámetro, debe tener menos de 39 bytes.

Elimina un parámetro adicional del conjunto actual de parámetros. Los cuelgues futuros no incluirán este parámetro.

crashReporter.getParameters()

Devuelve Record<string, string> - Los parámetros 'extra' actuales del informe del cuelgue.

En los procesos heredados de Nodo

Dado que require('electron') no está disponible en los procesos heredados de Node, las siguientes API están disponibles en el objeto process en los procesos heredados de Node.

process.crashReporter.start(options)

Consulte crashReporter.start().

Tenga en cuenta que si el reporte de fallos se inicia en el proceso principal, supervisará automáticamente los procesos heredados, por lo que no debería iniciarse en el proceso heredado. Utilice este método únicamente si el proceso principal no inicializa el crashReporter.

process.crashReporter.getParameters()

Consulte crashReporter.getParameters().

process.crashReporter.addExtraParameter(key, value)

Consulte crashReporter.addExtraParameter(key, value).

process.crashReporter.removeExtraParameter(key)

Consulte 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 en package.json.
  • _productName string - El nombre del producto en el objeto crashReporter options.
  • prod string - Nombre del producto subyacente. En esta caso Electron.
  • _companyName string - El nombre de la empresa en el objeto crashReporter options.
  • upload_file_minidump Archivo - El informe de fallos en el formato de minidump.
  • Todas las propiedades de nivel uno del objeto extra en el objeto crashReporter options.