Saltar al contenido

Log4Net cómo usar tanto el formato de error como el error al mismo tiempo

este problema se puede tratar de diferentes formas, por lo tanto te damos la respuesta más completa en nuestra opinión.

Solución:

Podrías crear un método de extensión:

namespace log4net.Core

    public class Log4NetExtensions 
        
         public static void ErrorFormatEx(this ILog logger, string format, Exception exception, params object[] args) 
         
               logger.Error(string.Format(format, args), exception);
         
    

Entonces puedes usarlo como lo harías con cualquier otro Log4Net método:

Log.ErrorFormatEx("Message 0", exception, CustomerId);

Sepa que esto ya ha sido respondido, pero solo para otros usuarios que puedan encontrar útil esta alternativa. Creé una interfaz ILog y una clase de registro para “centralizar” mis métodos y lógica log4net. También creé múltiples sobrecargas para el método “Error”.

ILog.cs

public interface ILog

    void Error(Exception exception);
    void Error(string customMessage, Exception exception);
    void Error(string format, Exception exception, params object[] args);
    void Warn(Exception exception);
    void Info(string message);

Log.cs

public class Log : ILog

    public void Error(Exception exception)
    
        log4net.ILog logger = log4net.LogManager.GetLogger(exception.TargetSite.DeclaringType);
        logger.Error(exception.GetBaseException().Message, exception);
    

    public void Error(string customMessage, Exception exception)
    
        log4net.ILog logger = log4net.LogManager.GetLogger(exception.TargetSite.DeclaringType);
        logger.Error(customMessage, exception);
    

    public void Error(string format, Exception exception, params object[] args)
    
        log4net.ILog logger = log4net.LogManager.GetLogger(exception.TargetSite.DeclaringType);
        logger.Error(string.Format(format, args), exception);
    

    public void Warn(Exception exception)
    
        log4net.ILog logger = log4net.LogManager.GetLogger(exception.TargetSite.DeclaringType);
        logger.Warn(exception.GetBaseException().Message, exception);
    

    public void Info(string message)
    
        log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
        logger.Info(message);
    

Ejemplo de uso

public MyClass DeserializeJsonFile(string path)

    try
    
        using (StreamReader r = new StreamReader(path))
        
            string json = r.ReadToEnd();
            return JsonConvert.DeserializeObject(json);
        
    
    catch (Exception ex)
           
        this.log.Error("Error deserializing  jsonfile. FilePath: 0", ex, path);
        return null;                
    

Esto ahora se soluciona con string interpolación:

Log.Error($"Message CustomerId", myException);

Te mostramos comentarios y puntuaciones

Nos puedes añadir valor a nuestra información cooperando tu experiencia en las aclaraciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *