Деякі люди використовують ELMAH замість log4net. Що робить це краще?
Я дізнався про ELMAH у відповіді на запитання про переповнення стека. Як мені ввійти в C #?
Деякі люди використовують ELMAH замість log4net. Що робить це краще?
Я дізнався про ELMAH у відповіді на запитання про переповнення стека. Як мені ввійти в C #?
Відповіді:
ELMAH служить метою відстеження помилок та винятків для ваших веб-додатків і дозволяє легко входити в систему або переглядати ці винятки за допомогою багатьох різних механізмів (SQL, RSS, Twitter, файли, електронна пошта тощо). Якщо у вас немає вбудованої обробки винятків, ELMAH швидше за все отримає те, що ви шукаєте, з точки зору обробки виключень у середовищі веб-додатків.
Log4net може бути використаний і для ведення журналів винятків, однак вам може знадобитися закатати власні обробники, щоб підключити веб-додаток. Log4net буде світити над ELMAH, якщо вам потрібно робити інші типи реєстрації інформації, оскільки log4net - це система загального призначення журналу. Log4net також може використовуватися майже в будь-якому додатку .NET.
Log4Net - це система загального призначення журналу з API, призначена для використання у вашій програмі (веб, консоль, dll тощо).
logger.Debug("Some low level debug message...");
logger.Info("Some basic info");
logger.Warn("Some business logic problem, but not critical");
logger.Error("An unexpected error");
ELMAH - ненав’язливий плагін IIS, спеціально для реєстрації винятків у веб-програмі. У вашій програмі ви не побачите посилання на ELMAH, у ньому немає API, з яким ви взаємодієте. Він використовує модулі та оброблювальні точки IIS розширення, щоб зафіксувати поведінку. Крім того, у нього є веб-передусім для перегляду помилок, які сталися у вашій веб-програмі. Log4Net не має переднього плану, просто різноманітні раковини журналів (додатки), які можуть надсилати ваші повідомлення журналу до таких речей, як файли журналів, сервер syslog, база даних тощо.
Ключова відмінність полягає в тому, що ELMAH реєструє виправлені виключення програми; log4net записує в журнал те, що ви йому скажете в журнал. Ви можете налаштувати log4net для реєстрації необроблених винятків, але ELMAH фіксує безліч корисної інформації з вікна.
ELMAH працює, створюючи модуль HTTP, який підключається до подій помилок, а потім здійснює ведення журналів. Це легко може бути зірване і порушене поганим дизайном. Log4Net може зажадати додаткової роботи заздалегідь, але якщо ви використовуєте рамку AOP і застосовуєте її у своєму класі або навіть на зборах, ви можете досягти набагато кращого журналу винятків з дуже невеликим кодом і зусиллями.
ELMAH працює лише в тому випадку, якщо він має доступ до HttpContext, чого в сервісах WCF важко досягти. Таким чином, ви все одно використовуєте якийсь інший реєстратор у WCF. Чому б просто не використовувати одне рішення, яке є більш універсальним.
ELMAH спеціально використовується для веб-додатків, тоді як log4net використовується як для веб-так і для додатків Windows. ELMAH має набагато більше переваг, ніж log4net у веб-додатку.