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)