KennyMolina.Logging.Test
0.0.1
no sirve
dotnet add package KennyMolina.Logging.Test --version 0.0.1
NuGet\Install-Package KennyMolina.Logging.Test -Version 0.0.1
<PackageReference Include="KennyMolina.Logging.Test" Version="0.0.1" />
<PackageVersion Include="KennyMolina.Logging.Test" Version="0.0.1" />
<PackageReference Include="KennyMolina.Logging.Test" />
paket add KennyMolina.Logging.Test --version 0.0.1
#r "nuget: KennyMolina.Logging.Test, 0.0.1"
#:package KennyMolina.Logging.Test@0.0.1
#addin nuget:?package=KennyMolina.Logging.Test&version=0.0.1
#tool nuget:?package=KennyMolina.Logging.Test&version=0.0.1
Sefin.Ucf.Logging
Una librería de logging para .NET basada en log4net con configuración dinámica y soporte para múltiples appenders.
🚀 Características
- ✅ Configuración dinámica mediante variables de entorno
- ✅ Múltiples destinos de logging: Consola, Archivo, Email, Microsoft Teams
- ✅ Patrón Singleton thread-safe
- ✅ Auto-generación de archivo de configuración
- ✅ Rotación automática de archivos de log
- ✅ Soporte para .NET 8.0
📦 Instalación
dotnet add package KennyMolina.Logging.Test
O mediante NuGet Package Manager:
Install-Package KennyMolina.Logging.Test
🔧 Uso básico
using Sefin.Ucf.logging.lib;
// Obtener instancia del logger (Singleton)
var logger = Logging.GetInstance();
// Usar los diferentes niveles de log
logger.Info("Mensaje informativo");
logger.Debug("Mensaje de depuración");
logger.Warn("Mensaje de advertencia");
logger.Error("Mensaje de error");
logger.Fatal("Mensaje fatal");
⚙️ Configuración
Configuración por defecto
La librería genera automáticamente un archivo log.config si no existe, con las siguientes características:
- Console Appender: Siempre habilitado
- File Appender: Habilitado por defecto (configurable)
- Email Appender: Deshabilitado por defecto (configurable)
Variables de entorno
Puedes controlar el comportamiento mediante variables de entorno:
Habilitar/Deshabilitar Appenders
# Habilitar logging a archivo (default: true)
ENABLE_FILE_LOGGING=true
# Habilitar logging por email (default: false)
ENABLE_EMAIL_LOGGING=true
Configuración de archivo
# Ruta del archivo de log
LOG_FILE_PATH=logs/app.log
Configuración de Email (SMTP)
EMAIL_TO=destinatario@example.com
EMAIL_FROM=remitente@example.com
EMAIL_SUBJECT=Error en Aplicación
SMTP_HOST=smtp.gmail.com
EMAIL_USERNAME=tu-email@gmail.com
EMAIL_PASSWORD=tu-contraseña-app
Configuración de Microsoft Teams
Para usar el appender de Teams, necesitas configurar manualmente el archivo log.config:
<appender name="TeamsAppender" type="Sefin.Ucf.logging.lib.TeamsAppender">
<webhookUrl value="https://outlook.office.com/webhook/YOUR_WEBHOOK_URL" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-5level %logger - %message%newline" />
</layout>
</appender>
<root>
<appender-ref ref="TeamsAppender" />
</root>
📝 Configuración personalizada
Nombre personalizado del archivo de configuración
var logger = Logging.GetInstance("mi-config.xml", "Mi Logger");
Configuración manual con log.config
Puedes crear tu propio archivo log.config en la raíz del proyecto:
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-5level %logger - %message%newline" />
</layout>
</appender>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="logs/app.log" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="5" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-5level %logger - %message%newline" />
</layout>
</appender>
<root>
<level value="INFO" />
<appender-ref ref="ConsoleAppender" />
<appender-ref ref="RollingFileAppender" />
</root>
</log4net>
🎯 Ejemplos avanzados
Logging con rotación de archivos
// Configurar variables de entorno antes de obtener la instancia
Environment.SetEnvironmentVariable("LOG_FILE_PATH", "logs/mi-app.log");
Environment.SetEnvironmentVariable("ENABLE_FILE_LOGGING", "true");
var logger = Logging.GetInstance();
logger.Info("Este mensaje se guardará en archivo con rotación automática");
Logging con notificaciones por email
// Configurar SMTP
Environment.SetEnvironmentVariable("ENABLE_EMAIL_LOGGING", "true");
Environment.SetEnvironmentVariable("EMAIL_TO", "admin@example.com");
Environment.SetEnvironmentVariable("EMAIL_FROM", "app@example.com");
Environment.SetEnvironmentVariable("SMTP_HOST", "smtp.gmail.com");
Environment.SetEnvironmentVariable("EMAIL_USERNAME", "tu-email@gmail.com");
Environment.SetEnvironmentVariable("EMAIL_PASSWORD", "tu-app-password");
var logger = Logging.GetInstance();
logger.Error("Este error se enviará por email");
🏗️ Arquitectura
La librería utiliza el patrón Singleton con Double-Check Locking para garantizar thread-safety:
public static Logging GetInstance(string logConfigName = "log.config", string loggerName = "Logger Sefin")
{
if (_instance == null)
{
lock (_lock)
{
if (_instance == null)
{
_instance = new Logging(logConfigName, loggerName);
}
}
}
return _instance;
}
📋 Dependencias
log4net(v3.2.0)Microsoft.AspNetCore.Http.Abstractions(v2.3.0)Newtonsoft.Json(v13.0.4)
🤝 Contribuir
Las contribuciones son bienvenidas. Por favor, abre un issue primero para discutir los cambios que te gustaría hacer.
📄 Licencia
Este proyecto está bajo la licencia MIT.
📧 Contacto
Para preguntas o soporte, contacta a: [tu-email@example.com]
🔍 Keywords
logging, log4net, .NET, C#, dotnet, logger, diagnostic, monitoring
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- log4net (>= 3.2.0)
- Microsoft.AspNetCore.Http.Abstractions (>= 2.3.0)
- Newtonsoft.Json (>= 13.0.4)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|