Справочная информация:
Я написал общую библиотеку журналов в .NET 3.5. По сути, разработчик должен вызывать метод Begin () в начале своего метода и метод End () в конце его. Эти методы не принимают параметр - библиотека использует трассировку стека, чтобы выяснить, откуда она взялась. Библиотека имеет коллекцию, которая отслеживает стек вызовов и записывает прошедшее время каждого метода.
Это работает очень хорошо, и я доволен этим.
Но теперь мы хотим добавить его на сервер. Когда в системе работает несколько пользователей, существует только один файл журнала, и трассировки стека объединяются. Невозможно сказать, какой поток что делает.
Мой вопрос такой:
Есть ли способ получить уникальное значение из класса StackTrace или отдельного StackFrame? Как насчет использования отражения? Я хотел бы иметь возможность создать отдельный файл для каждого пользователя. По крайней мере, я хотел бы иметь возможность пометить каждую строку уникальным значением, чтобы мы могли фильтровать файл по этому значению при просмотре трасс.
Мы используем WCF TcpBinding в качестве протокола связи на стороне сервера, если это поможет. Я ищу идентификатор потока, хэш-код, адрес, что-то, чтобы отличить, откуда пришел стек вызовов.
Есть идеи?
Спасибо.