Чим відрізняється log4net від ELMAH?


108

Деякі люди використовують ELMAH замість log4net. Що робить це краще?

Я дізнався про ELMAH у відповіді на запитання про переповнення стека. Як мені ввійти в C #?


можливо дублікат stackoverflow.com/questions/800009 / ...
ЕМПІ

Тепер, коли ядро ​​.net зображено, чи змінюється сценарій? (elmah не підтримує .net core станом на січень 2018 року).
Чайтанья Гадкарі

Відповіді:


92

ELMAH служить метою відстеження помилок та винятків для ваших веб-додатків і дозволяє легко входити в систему або переглядати ці винятки за допомогою багатьох різних механізмів (SQL, RSS, Twitter, файли, електронна пошта тощо). Якщо у вас немає вбудованої обробки винятків, ELMAH швидше за все отримає те, що ви шукаєте, з точки зору обробки виключень у середовищі веб-додатків.

Log4net може бути використаний і для ведення журналів винятків, однак вам може знадобитися закатати власні обробники, щоб підключити веб-додаток. Log4net буде світити над ELMAH, якщо вам потрібно робити інші типи реєстрації інформації, оскільки log4net - це система загального призначення журналу. Log4net також може використовуватися майже в будь-якому додатку .NET.


3
log4net дає вам більше контролю.
DarthVader

6
Ви можете отримати найкраще з обох світів, скориставшись цим додатком ELMAH для log4net. Просто занотуйте те, що вам подобається (налагодження, інформація, попереджайте, помилка) за допомогою log4net, але зберігайте його в ELMAH nuget.org/packages/elmahappender_log4net_1.2.10
Sturla

111

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, база даних тощо.


23
Одне виправлення, Elmah має Api, з яким розробник може взаємодіяти. Наприклад, сигналізація досягається за допомогою Elmah Api.
Ед Дегань

8
Ще одна корекція? ELMAH - це .NET HttpModule / HttpHandler. Це НЕ плагін IIS. ARR - плагін. Не ELMAH.
Максим Рулер

Яка ваша відповідь на коментарі?
Пітер Мортенсен

36

Ключова відмінність полягає в тому, що ELMAH реєструє виправлені виключення програми; log4net записує в журнал те, що ви йому скажете в журнал. Ви можете налаштувати log4net для реєстрації необроблених винятків, але ELMAH фіксує безліч корисної інформації з вікна.


1
Якщо правильно налаштувати, ELMAH отримує безліч корисної інформації. за однакову кількість часу ви можете зробити те ж саме з log4net з більшим контролем.
DarthVader

DarthVader - чи є у вас зразок конфігурації log4net, який робить те саме?
JasonD

5
ELMAH фіксує безліч корисної інформації з коробки без конфігурації NO. При додатковій конфігурації він обробляє як необроблені винятки, так і оброблені винятки.
Тревор де Коеккьок

5

ELMAH працює, створюючи модуль HTTP, який підключається до подій помилок, а потім здійснює ведення журналів. Це легко може бути зірване і порушене поганим дизайном. Log4Net може зажадати додаткової роботи заздалегідь, але якщо ви використовуєте рамку AOP і застосовуєте її у своєму класі або навіть на зборах, ви можете досягти набагато кращого журналу винятків з дуже невеликим кодом і зусиллями.

ELMAH працює лише в тому випадку, якщо він має доступ до HttpContext, чого в сервісах WCF важко досягти. Таким чином, ви все одно використовуєте якийсь інший реєстратор у WCF. Чому б просто не використовувати одне рішення, яке є більш універсальним.



1

ELMAH спеціально використовується для веб-додатків, тоді як log4net використовується як для веб-так і для додатків Windows. ELMAH має набагато більше переваг, ніж log4net у веб-додатку.


5
Які ці переваги? Я скоро зроблю ASP.NET, тому я хотів би дізнатися вашу освічену думку. Я все ще починаю в .NET, тому мені складніше інтерпретувати те, що вони говорять на своїх сайтах.
IAdapter

Ви можете переглядати звіти навіть без написання коду. Дивіться функції elmah тут code.google.com/p/elmah
Adeel

Elmah дуже обмежений, і єдиною перевагою є звіти, але він обмежений веб-додатками, які мають доступ до HttpContext. Ви можете мати дані інших журналів реєстраторів у багатьох інших джерелах, про які можна повідомити.
Дастін Девіс

0

ELMAH дуже потужний, але також дуже специфічний у тому, що робить. Це робить багато роботи для вас, хоча я вважаю, що Log4Net вимагає від вас помилок та обробки даних.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.