Как реализовать трассировку в .net - PullRequest
0 голосов
/ 07 августа 2009

Я сам внедряю механизм отслеживания. Теперь я хотел бы знать, как лучше всего реализовать этот механизм (я имею в виду архитектуру). Сначала я подумал о создании такого класса:

class Tracer {
    public void NewEventRegistered(etc) {...} //this is the method I use to send this class the events I want to register

    event newEventRegistered(..) //this is the event the user is going to use to catch all the events in the application that have been sent to NewEventRegistered method.
}

Но затем я увидел, что есть класс TraceListener, который позволяет мне реализовывать методы Write и WriteLine. Большой недостаток заключается в том, что оба эти метода допускают только строки в качестве аргументов, и я хотел бы иметь возможность отправлять гораздо больше информации, чем строки. Что я должен делать? Может быть, моя первая идея самая лучшая?

edit: я знаю, что существует множество механизмов трассировки, таких как PostSharp, поэтому я просто делаю это для изучения!

1 Ответ

2 голосов
/ 07 августа 2009

Функции Write и WriteLine, которые принимают строки, представляют только минимальную пару функций, которые вы должны переопределить. В TraceListener есть и другие функции записи, которые вы можете по желанию переопределять, которые принимают объекты.

TraceListener, однако, предназначен для использования с функциями трассировки фреймворка. Поэтому, если вы не собираетесь использовать этот класс для «прослушивания» трассировки, проходящей через платформу, вам может быть лучше использовать интерфейс, более подходящий для ваших конкретных потребностей трассировки.

Возможно, наследование от System.IO.TextWriter будет лучше для вашего случая. У него много методов записи, но я считаю, что они направляют весь свой вывод через Write и WriteLine, так что если вы просто переопределите эти две функции, вы получите много бесплатно.

...