Интеграция существующего приложения с регистрацией свойств Seq - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть приложение MVC 5 (не .NET Core), которое разрабатывалось годами.Я ввел Seq , чтобы у меня был централизованный журнал и я мог рассмотреть различные узлы моего приложения.

Я успешно добавил некоторые свойства как ApplicationName и Machine, носейчас она не так богата, как информация, которую я хочу регистрировать.

Прежде чем вы спросите, я просто погуглил и нашел инструменты AOP, такие как Fody или PostSharp, которые позволяют мне упростить этот процесс, но я не знаю,это отвечает моим потребностям.

Прежде всего, давайте поговорим об исключении ...

В настоящее время я регистрируюсь, используя log4net с информацией об адаптере Seq как

enter image description here

Но я хочу записать параметры, которые передаются в метод сбоя (в данном случае это

 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, поэтому я могу легко отследить все

Не могли бы вы помочь мне разобраться с этим?

...