Похоже, атрибуты CallerMemberName
, CallerFilePath
, CallerLineNumber
не работают в .Net Core 3.0 (значения пусты).
[HttpGet]
public string GetObjects(
[CallerMemberName] string memberName = "",
[CallerFilePath] string sourceFilePath = "",
[CallerLineNumber] int sourceLineNumber = 0)
{
try
{
...
}
catch (Exception e)
{
LogException(e, memberName, sourceFilePath, sourceLineNumber);
throw e;
}
}
Я пытался использовать рецепты описано здесь и здесь , но они тоже не работают.
Это ошибка или известная функция? Или я пропускаю что-то важное?
РЕДАКТИРОВАТЬ
Моя ошибка заключалась в том, что я добавил атрибуты не в ту функцию, в которую мне нужно было добавить. Я изменил свой код на
[HttpGet]
public string GetObjects()
{
try
{
...
}
catch (Exception e)
{
LogException(e);
throw e;
}
}
private void LogException(Exception e,
[CallerMemberName] string memberName = "",
[CallerFilePath] string sourceFilePath = "",
[CallerLineNumber] int sourceLineNumber = 0)
{
_logger.LogError(_event, e, "Exception in {memberName}, {sourceFilePath}, {sourceLineNumber} ", memberName, sourceFilePath, sourceLineNumber);
}
и теперь он работает как положено.