【发布时间】:2015-04-22 12:18:56
【问题描述】:
我正在使用 C#、ASP.NET MVC Web Api、Entity Framework 和 .NET Framework 4.0 进行开发。
我有这段代码来记录异常:
public void LogCompleteException(
string controllerName,
string actionName,
Exception exception)
{
string exceptionMessage = string.Empty;
Exception e = exception;
if (e.InnerException == null)
e = null;
else
while (e.InnerException != null) e = e.InnerException;
if (e == null)
exceptionMessage = exception.Message;
else
exceptionMessage = string.Format("{0}\n\rInnerException: {1}", exception.Message, e.Message);
_logger.ErrorFormat(
LogTextFormatString,
ExceptionText,
controllerName,
actionName,
exceptionMessage);
}
但是在我的日志文件中我发现了这个:
一个或多个实体的验证失败。看 'EntityValidationErrors' 属性以获取更多详细信息。
当我写“有关更多详细信息,请参阅 'EntityValidationErrors' 属性”时,我只是展示了一个示例,我没有记录重要的属性。
有很多例外;但使用我的方法,我没有记录所有相关信息,因为可能存在我没有记录的“EntityValidationErrors”等属性。
当我传递异常来记录它时,我不知道它有什么属性,也不知道如何记录它的每个属性。
你知道完整记录异常的方法吗?我的代码不会出现带有EntityValidationErrors 属性或任何其他重要属性的异常。
我正在使用 log4net 进行日志记录。
【问题讨论】:
-
我假设日志记录是通过 log4net 完成的?
-
是的,我正在使用 log4net 登录。
-
为什么不使用 exception.ToString()?
-
你在 SO 上看到过similar posts 吗?假设您不想捕获
DbEntityValidationException异常并自己创建完整的错误消息是否安全? -
@Michael
DbEntityValidationExceptionexceptions 这只是一个例子,我可以获得多种异常并且没有任何重要信息。
标签: c# asp.net-mvc entity-framework exception log4net