2009-09-24 2 views
1

Мне нужно изменить существующую программу, которая выполняет некоторую регистрацию ошибок, записывая в файл доступа, и на самом деле использует DLL log4net (как мы выяснили, проверив DLL через шестнадцатеричный редактор), поэтому в идее мне нужно будет перекомпилируйте измененную dll с оригиналом, который использует программа. Необходимость довольно проста: для некоторых ошибок, которые записываются в файл доступа, система должна автоматически предупреждать администратора, отправив ему электронное письмо.log4net и рассылка

Какие части проекта и документации я должен смотреть? Я совершенно потерялся как человек, который очень новичок в платформе .net, а также log4net.

EDIT: Кажется, что файл конфигурации log4net встроен, поэтому нет доступа к конфигурации напрямую. Похоже, мне понадобится другой способ исправить это. С уважением

ответ

5

Вам, вероятно, вообще не нужно менять DLL. Возможно, ваша конфигурация log4net находится в файле App.config или в отдельном файле конфигурации, таком как log4net.xml.

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

Есть образец на configuration examples page, просто найдите SmtpAppender. Если вам нужно контролировать, какие сообщения отправляются на электронную почту, вы можете проверить разделы configuration manual на регистраторах и фильтрах.

1

Если у вас есть исходный код программы, это довольно просто изменить из жестко запрограммированной конфигурации в файл конфигурации.

В случае, если у вас нет доступа к исходному коду, я бы использовать DateTime lastAccessTime = File.GetLastAccessTime(@"c:\file.txt"); или DateTime lastWriteTime = File.GetLastWriteTime(@"c:\file.txt"); для определения доступа к файлам с помощью второй программы и по-прежнему использовать log4net для отправки сообщений электронной почты. Попытка настроить log4net.dll намного сложнее и не рекомендуется из моего pov.

1

Вы писали

Похоже, что конфигурационный файл log4net встраивается Я думаю, у вас есть несколько вариантов:

Если у вас есть исходный код оригинальной программы, сделать не вставлять файл Log4Net и изменять его в соответствии с предложениями Дон Киркби (добавьте SmtpAppender).

Если у вас нет исходного кода, но вы юридически одеты, вы можете разобрать программу, изменить внедренный ресурс (добавить SmtpAppender) и поместить его обратно вместе (например: csc.exe /out:main.exe /target:exe /resource:main.exe.config main.cs).

Или, если у вас нет исходного кода и не разрешено обратное проектирование, вы можете модифицировать способ настройки log4net и загрузить другой файл конфигурации вместо встроенного. Для этого, я думаю, это должно быть изменено XmlConfigurator Class. Если ваша оригинальная сборка была построена с новой версией log4net, вы можете добавить assembly redirect, чтобы вместо этого использовался ваш costumized log4net.dll. В конце концов, вы должны настроить SmtpAppender, как было предложено ранее.