Создайте собственный регистратор, я должен расширить класс из log4net - PullRequest
0 голосов
/ 03 ноября 2010

Я делаю что-то необычное.

У меня есть приложение, оно работает как служба Windows.

Что он делает, так это то, что он отслеживает одну папку, и когда в эту папку помещается какой-то новый файл, приложение что-то делает с файлом. Всякий раз, когда возникает ошибка при обработке одного файла. Мне нужно создать текстовый файл и поместить информацию об ошибке / исключении в этот текстовый файл. (позже я могу что-то сделать с этим файлом)

так что-то вроде этого

FileWatch, when there is a new file, do following :
     try
     {
         processing file
     }
     catch(Exception ex)
     {
         MyLogger write exception message into one new text file
     }

Пока как я это сделал. Я создаю класс, например, MyLogger, всякий раз, когда я создаю новый MyLogger, он создает текстовый файл (имя имеет значение, должен быть определенного формата), и есть один метод в стороне MyLogger «WriteError (string message)», он пишет текст в этот файл.

Так как я использовал log4net в моем приложении. Как вы думаете, я должен изменить свой логгер, чтобы расширить какой-то класс из log4net, чтобы я мог получить некоторую выгоду? (не уверен, какую выгоду я получу, но log4net - это хороший каркас для ведения журналов, способ, которым он обрабатывает текстовый файл, может иметь то, чего я не знаю)

Спасибо

Ответы [ 5 ]

1 голос
/ 03 ноября 2010

log4net или любой другой общий регистратор полезен, если
1) вы хотите иметь единообразные средства ведения журнала во многих местах вашего приложения; и / или
2) вам нужна возможность настроить формат ведения журнала, уровень и т. Д.

Из вашего описания видно, что в вашем приложении есть единственная точка, в которой вам нужно регистрировать исключение определенным образом. Если это правильно, вы, вероятно, не получите никакой выгоды от создания собственного регистратора - просто напишите метод, который регистрирует исключение в файл так, как вам нужно.

Если я вас неправильно понял, и есть необходимость в универсальном логгере (т. Е. 1 или 2), то выше), расширение log4net путем наследования логгера или создания оболочки - это нормально.

1 голос
/ 03 ноября 2010

Я уже создавал оболочки для log4net. Я считаю, что начинать этот путь удобно, поскольку вы не всегда знаете, каковы требования к ведению журналов в начале проекта. Моим правилом было то, что на библиотеку log4net можно ссылаться только из моего собственного пространства имен «logging». Таким образом, код приложения вызывает только оболочку, а оболочка является единственной точкой контакта с функциями log4net.

В долгосрочной перспективе, вероятно, стоит инвестировать в создание собственного регистратора. Если вы правильно инкапсулируете log4net, вы сможете сделать это обновление довольно легко, без необходимости изменения кода.

0 голосов
/ 03 ноября 2010

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

0 голосов
/ 03 ноября 2010

Вы должны потратить некоторое время на создание собственного регистратора, который делает именно то, что вы хотите. Это было бы лучшим способом. Это также довольно просто, и у вас есть полный контроль над настройкой, так что вы можете сделать вывод похожим на log4net. Вы могли бы Google для регистрации образца и начать изменять тот.

0 голосов
/ 03 ноября 2010

Почему бы не использовать Прослушиватели трассировки из .NET Framework? Они предоставляют многие преимущества сети журналирования без необходимости использования внешней структуры.

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

...