[英]NLog - Throw exception and log message at the same time
我有以下方法,其中包括开始时的验证检查。 我正在使用NLog
,我想记录异常消息并“同时”引发异常,从而避免了尽可能多的代码膨胀。
目前,我正在执行以下操作,但似乎有点笨重。 有没有更好的办法?
public static void ValidateValue(string value)
{
if (!string.IsNullOrWhiteSpace(value) && value.Contains(","))
{
ArgumentException ex = new ArgumentException(string.Format("value cannot contain ',': {0}", value));
Logger.Error(ex);
throw ex;
}
}
我正在寻找的将更多地是
public static void ValidateValue(string value)
{
if (!string.IsNullOrWhiteSpace(value) && value.Contains(","))
throw Logger.Error<ArgumentException>("value cannot contain ',': {0}", value);
}
Logger.Error<>
方法在记录消息后返回ArgumentException
的位置。
这似乎很有用,可能已经存在,但是也许我必须使用自己的扩展方法?
谢谢!
不建议在同一位置记录和引发异常,因为:
我建议以下内容:
在不记录上下文信息时添加上下文信息,我使用以下帮助器:
public static TException SetContextData<TException>(this TException exception, object key, object value) where TException : Exception { exception.Data[key] = value; return exception; }
用法:
throw ex.SetContextData("someContext", 123) .SetContextData("anotherId", 133);
使用NLog,您可以记录异常数据,如下所示:
${exception:format=toString,Data:maxInnerExceptionLevel=10}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.