ulmic/MIC_Enterprise — pull request #11 by OlegZotov (2013-01-26 22:11:01+00:00)
Title: Logging + correction og SendMail.cs

В SendMail.cs исправил почту, с которой идет отправка.

Logging:

Для ведения лога нужна NLog.dll скинул в папку с dll. Подключается /*using NLog;*/.
Еще нужен NLog.config. Файл нужно добавить в проект и установить свойство "Копировать в выходной каталог" на "Копировать, если новее".
Следующей строкой
/*private static Logger logger = LogManager.GetCurrentClassLogger();*/
на основе выше упомянутого конфига так называемым LogManager'ом создается Logger,который как раз и будет вести лог.

В конфиге:

при записи в файл все банально, указываем только путь и название
/* fileName="${basedir}/nlog.txt" */
При отправке на почту следующие строки отвечают за отправителя и получателя:
/*
smtpUsername="logger.mic@mail.ru"
smtpPassword="ilovemic2012it"
from="logger.mic@mail.ru"
to="olegzotov73@gmail.com"
*/

Теперь о том, как это используется в коде.
Метод logger.ErrorException(string message, Exeption ex) записывает в лог(куда именно уже настроено в кофиге на тот момент) сообщение message, а также любую необходимую информацию, в том числе об отловленом исключении ex, в формате, который так же задается в конфиге строкой layout.

Для сохранения читабельности кода и его красоты вместо обычного try-catch используется следующая конструкция:
/*public delegate void inlineCode();
public static void logTryCatch(inlineCode code){
try{
code();
}
catch (Exception ex){
logger.ErrorException("Got exception.", ex);
}
}
*/

Вот как это используется непосредственно в коде:
/*logTryCatch(delegate()
{
String example = "place for dangerous code that generates exceptions";
});
*/