У меня есть приложение MVC 5 (не .NET Core), которое разрабатывалось годами.Я ввел Seq , чтобы у меня был централизованный журнал и я мог рассмотреть различные узлы моего приложения.
Я успешно добавил некоторые свойства как ApplicationName и Machine, носейчас она не так богата, как информация, которую я хочу регистрировать.
Прежде чем вы спросите, я просто погуглил и нашел инструменты AOP, такие как Fody или PostSharp, которые позволяют мне упростить этот процесс, но я не знаю,это отвечает моим потребностям.
Прежде всего, давайте поговорим об исключении ...
В настоящее время я регистрируюсь, используя log4net с информацией об адаптере Seq как
Но я хочу записать параметры, которые передаются в метод сбоя (в данном случае это
private void setStato(int idPolizza, int statoRinnovo)
{
....omiss....
}
Теперь я могу для такого случая поставитьвойти в setStato с помощью idPolizza, statoRinnovo в начале метода или просто при возникновении исключения, но это вручную означало бы ввести всю catch
информацию журнала.
Я видел с MethodBoundaryApect, что я могу написать этот аспект
public sealed class HelloWorldAspect : OnMethodBoundaryAspect
{
public override void OnEntry(MethodExecutionArgs arg)
{
Console.WriteLine("Entered method: " + arg.Method.Name);
}
public override void OnExit(MethodExecutionArgs arg)
{
Console.WriteLine("Exited method: " + arg.Method.Name);
}
public override void OnException(MethodExecutionArgs args)
{
Console.WriteLine("Exception: " + args.Exception.Message);
}
}
и записать такую информацию в метод OnException, но достаточно ли этого?при этом мне пришлось бы удалять в каждом catch
log.Error()
, чтобы избежать дублирования?
Какой подход вы используете в таком сценарии?
Другой вопрос связан свойти в общем.Я хотел бы войти, когда пользователь выполняет операцию с некоторой контекстной информацией, такой как Имя пользователя / IP / и некоторый параметр, который связан с начальным вызовом (например, редактировать следующую позицию клиента, сохраняя идентификатор) вместе со всем процессом, так что еслиЯ знаю, что произошла ошибка для пользователя FOO по customerId = 5, поэтому я могу легко отследить все
Не могли бы вы помочь мне разобраться с этим?