Progreso.SentryHelper 1.0.0
Progreso Sentry Helper
Un helper robusto para el registro de errores con soporte para Sentry y API personalizada de errores. Incluye fallback automático, manejo asíncrono de errores y configuración flexible.
Características
- ✅ Soporte para Sentry.io
- ✅ Soporte para API personalizada de errores
- ✅ Fallback automático entre sistemas
- ✅ Manejo asíncrono para no bloquear la aplicación
- ✅ Configuración flexible vía código o appsettings.json
- ✅ Logging en consola opcional
- ✅ Mapeo automático de ambientes
- ✅ Serialización inteligente de datos de excepción
Instalación
Desde NuGet Lilab
dotnet add package Progreso.SentryHelper --version 1.0.0 --source http://nuget.lilab.pe/v3/index.json
Publicar nueva versión en Lilab
PowerShell:
.\publish-lilab.ps1 -Version "1.0.1"
Batch (CMD):
publish-lilab.bat 1.0.1
Manual:
# Empaquetar
dotnet pack ProgresoSentryHelper.csproj --configuration Release /p:PackageVersion=1.0.0
# Publicar
dotnet nuget push -s http://nuget.lilab.pe/v3/index.json .\bin\Release\Progreso.SentryHelper.1.0.0.nupkg -k lilab66#
Configuración en el proyecto
- Agregar el paquete al proyecto:
<PackageReference Include="Progreso.SentryHelper" Version="1.0.0" />
Uso
Configuración básica
Opción 1: Configuración por código
using Progreso.SentryHelper;
// En el Startup.cs o Program.cs
var config = new SentryHelperConfiguration
{
EnableSentry = true,
SentryDsn = "https://your-sentry-dsn@sentry.io/project-id",
EnableCustomApi = true,
CustomApiUrl = "https://api.example.com/errors",
Environment = "Production",
ApplicationName = "MiAplicacion",
ApplicationVersion = "1.0.0",
LogToConsole = true,
UseSentryAsFallback = true
};
SentryHelper.Initialize(config);
Opción 2: Configuración vía appsettings.json
{
"SentryHelper": {
"EnableSentry": true,
"SentryDsn": "https://your-sentry-dsn@sentry.io/project-id",
"EnableCustomApi": true,
"CustomApiUrl": "https://api.example.com/errors",
"ApiTimeout": 3,
"Environment": "Production",
"ApplicationName": "MiAplicacion",
"ApplicationVersion": "1.0.0",
"LogToConsole": true,
"UseSentryAsFallback": true,
"TracesSampleRate": 0.1
}
}
// En Startup.cs
public void ConfigureServices(IServiceCollection services)
{
// Usar extensión para configurar desde appsettings
services.AddSentryHelper(Configuration);
// O con configuración adicional
services.AddSentryHelper(Configuration, config =>
{
config.Debug = true;
config.UserId = GetCurrentUserId();
});
}
Registro de errores
try
{
// Tu código aquí
DoSomething();
}
catch (Exception ex)
{
// Registrar la excepción
SentryHelper.LogException(ex);
// O con datos adicionales
var additionalData = new Dictionary<string, string>
{
["UserId"] = currentUser.Id,
["Operation"] = "ProcessPayment",
["Amount"] = amount.ToString()
};
SentryHelper.LogException(ex, additionalData);
}
Registro de mensajes
// Mensaje informativo
SentryHelper.LogMessage("Proceso completado exitosamente");
// Mensaje de advertencia
SentryHelper.LogMessage("Memoria baja detectada", SentryLevel.Warning);
// Mensaje de error
SentryHelper.LogMessage("Fallo en la conexión a la base de datos", SentryLevel.Error);
Migración desde código existente
Si estás migrando desde el código Helper existente:
// Código anterior
Helper.logSentryIO(exception);
// Nuevo código
SentryHelper.LogException(exception);
Configuración avanzada
Ambientes
El helper mapea automáticamente los ambientes:
Development,Debug,Local→DEVELOPMENTTest,Stage,Staging→STAGING- Cualquier otro →
PRODUCTION
Formato del API personalizado
El helper envía los errores al API personalizado en el siguiente formato:
{
"type": "ERROR",
"message": "Error message",
"environment": "PRODUCTION",
"userAgent": "MiApp/1.0.0",
"url": "https://api.example.com",
"userId": "user123",
"stackTrace": "...",
"metadata": {
"exceptionType": "System.NullReferenceException",
"source": "MyApp.Services",
"innerException": "...",
"timestamp": "2024-01-15T10:30:00.000Z",
"machineName": "SERVER01",
"version": "1.0.0",
"data": {},
"additionalData": {}
}
}
Opciones de configuración
| Propiedad | Tipo | Default | Descripción |
|---|---|---|---|
EnableSentry |
bool | true | Habilita el envío a Sentry |
SentryDsn |
string | null | DSN del proyecto en Sentry |
EnableCustomApi |
bool | true | Habilita el envío al API personalizado |
CustomApiUrl |
string | null | URL del API personalizado |
ApiTimeout |
int | 3 | Timeout en segundos para el API |
Environment |
string | "Production" | Ambiente de la aplicación |
ApplicationName |
string | "Application" | Nombre de la aplicación |
ApplicationVersion |
string | "1.0.0" | Versión de la aplicación |
ApplicationUrl |
string | null | URL de la aplicación |
UserId |
string | "system" | ID del usuario actual |
LogToConsole |
bool | true | Habilita logs en consola |
UseSentryAsFallback |
bool | true | Usa Sentry si el API falla |
Debug |
bool | false | Modo debug con logs adicionales |
TracesSampleRate |
double | 0.1 | Tasa de muestreo para traces |
Mejores prácticas
Inicialización temprana: Inicializa el helper lo antes posible en el ciclo de vida de la aplicación.
Manejo de recursos: Llama a
SentryHelper.Dispose()al cerrar la aplicación:public void OnApplicationStopping() { SentryHelper.Dispose(); }Datos sensibles: No incluyas información sensible (contraseñas, tokens) en los datos adicionales.
Ambientes: Configura correctamente el ambiente para facilitar el filtrado en Sentry.
Versionado: Mantén actualizada la versión de la aplicación para mejor trazabilidad.
Solución de problemas
El API personalizado no recibe errores
- Verifica que
EnableCustomApiesté entrue - Confirma que
CustomApiUrlsea correcto - Revisa los logs de consola si
LogToConsoleestá habilitado - Verifica el timeout configurado
Sentry no recibe eventos
- Verifica que
EnableSentryesté entrue - Confirma que el DSN sea correcto
- Verifica la conectividad de red
Performance
- Si experimentas lentitud, reduce
ApiTimeout - Considera deshabilitar
LogToConsoleen producción - Ajusta
TracesSampleRatesegún necesidad
Licencia
MIT
Soporte
Para soporte, contacta al equipo de desarrollo de Progreso.
No packages depend on Progreso.SentryHelper.
.NET Standard 2.0
- Microsoft.Extensions.Configuration (>= 3.1.32)
- Microsoft.Extensions.Configuration.Binder (>= 3.1.32)
- Microsoft.Extensions.Configuration.Json (>= 3.1.32)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 3.1.32)
- Newtonsoft.Json (>= 13.0.3)
- Sentry (>= 3.21.0)
| Version | Downloads | Last updated |
|---|---|---|
| 1.0.0 | 7 | 08/20/2025 |