Apa perbedaan antara log4net dan ELMAH?

Jawaban:

92

ELMAH berfungsi untuk melacak kesalahan dan pengecualian untuk aplikasi web Anda dan memungkinkan Anda untuk dengan mudah mencatat atau melihat pengecualian tersebut melalui berbagai mekanisme (SQL, RSS, Twitter, file, email, dll.). Jika Anda tidak memiliki penanganan pengecualian bawaan, ELMAH kemungkinan besar akan memberi Anda apa yang Anda cari dalam hal penanganan pengecualian dalam lingkungan aplikasi web.

Log4net juga dapat digunakan untuk pencatatan log pengecualian, namun Anda mungkin perlu menggulung penangan Anda sendiri untuk dicolokkan ke aplikasi web Anda. Log4net akan bersinar di atas ELMAH jika Anda perlu melakukan jenis pencatatan informasi lain karena log4net adalah kerangka kerja pencatatan tujuan umum. Log4net juga dapat digunakan di hampir semua aplikasi .NET.

Mark Coleman
sumber
3
log4net memberi Anda kontrol lebih.
DarthVader
6
Anda bisa mendapatkan yang terbaik dari kedua dunia dengan menggunakan Appender ELMAH ini untuk log4net. Cukup catat apa yang Anda suka (debug, info, peringatkan, kesalahan) dengan log4net tetapi simpan di ELMAH nuget.org/packages/elmahappender_log4net_1.2.10
Sturla
111

Log4Net adalah kerangka kerja pencatatan tujuan umum dengan API yang dimaksudkan untuk digunakan dalam aplikasi Anda (web, konsol, dll, 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 adalah plugin IIS yang tidak mengganggu khusus untuk pengecualian logging di aplikasi web. Anda tidak akan melihat referensi ke ELMAH dalam aplikasi Anda, karena tidak memiliki API yang Anda gunakan untuk berinteraksi. Ini menggunakan modul dan penangan titik ekstensi IIS untuk mengunci perilaku. Selain itu, ia memiliki web front-end untuk melihat kesalahan yang terjadi dalam aplikasi web Anda. Log4Net tidak memiliki front-end, hanya berbagai log sink (Appenders) yang dapat mengirim pesan log Anda ke hal-hal seperti file log, server syslog, database, dll.

Mike Valenty
sumber
23
Satu koreksi, Elmah memang memiliki Api yang dapat digunakan pengembang untuk berinteraksi. Misalnya, pensinyalan dicapai melalui Elmah Api.
Ed DeGagne
8
Koreksi lagi? ELMAH adalah .NET HttpModule / HttpHandler. Ini BUKAN plugin IIS. ARR adalah sebuah plugin. Bukan ELMAH.
Maxime Rouiller
Apa tanggapan Anda atas komentar tersebut?
Peter Mortensen
36

Perbedaan utamanya adalah bahwa ELMAH mencatat pengecualian aplikasi yang tidak tertangani; log4net mencatat apa pun yang Anda perintahkan untuk dicatat. Anda dapat mengkonfigurasi log4net untuk mencatat pengecualian yang tidak tertangani, tetapi ELMAH menyimpan banyak informasi berguna di luar kotak.

Jamie Ide
sumber
1
ELMAH menangkap banyak informasi berguna di luar kotak, jika Anda mengkonfigurasi dengan benar. untuk jumlah waktu yang sama, Anda dapat melakukan hal yang sama dengan log4net dengan kontrol lebih.
DarthVader
DarthVader - apakah Anda memiliki contoh konfigurasi log4net yang melakukan hal yang sama?
JasonD
5
ELMAH menangkap banyak informasi berguna di luar kotak dengan konfigurasi NO. Dengan konfigurasi tambahan, ia akan menangani pengecualian yang tidak tertangani dan pengecualian yang ditangani.
Trevor de Koekkoek
5

ELMAH bekerja dengan membuat modul HTTP yang menghubungkan ke kejadian kesalahan dan kemudian melakukan logging. Ini dengan mudah dapat digagalkan dan dipatahkan oleh desain yang buruk. Log4Net mungkin memerlukan pekerjaan tambahan dimuka tetapi jika Anda menggunakan kerangka kerja AOP dan menerapkannya di seluruh kelas Anda atau bahkan perakitan, Anda dapat mencapai pencatatan pengecualian yang jauh lebih baik dengan sedikit kode dan upaya.

ELMAH hanya bekerja jika ia memiliki akses ke HttpContext yang sulit dicapai dalam layanan WCF. Jadi, Anda akhirnya akan menggunakan logger lain di WCF. Mengapa tidak menggunakan satu solusi yang lebih universal.

Dustin Davis
sumber
4

ELMAH:

  • aplikasi web

Log4net:

  • aplikasi web

  • Aplikasi Windows

Referensi tambahan: ref_1 ref_2

sgokhales.dll
sumber
1

ELMAH secara khusus digunakan untuk aplikasi web sedangkan log4net digunakan pada aplikasi web dan Windows. ELMAH memiliki lebih banyak keunggulan dibandingkan log4net dalam aplikasi web.

Adeel
sumber
5
Apa keuntungannya? Saya akan segera mengerjakan ASP.NET, jadi saya ingin mengetahui pendapat Anda. Saya masih pemula di .NET, jadi lebih sulit bagi saya untuk menafsirkan apa yang mereka katakan di situs mereka.
IAdapter
Anda dapat melihat laporan bahkan tanpa menulis kode apa pun. Lihat fitur elmah di sini code.google.com/p/elmah
Adeel
Elmah sangat terbatas dan satu-satunya "avantage" adalah laporannya tetapi terbatas pada aplikasi web yang memiliki akses ke HttpContext. Anda dapat memiliki data log penebang lain ke banyak sumber lain yang dapat dilaporkan.
Dustin Davis
0

ELMAH sangat kuat, tetapi juga sangat spesifik dalam fungsinya. Ia melakukan banyak pekerjaan untuk Anda, sementara saya yakin Log4Net mengharuskan Anda untuk melakukan penanganan kesalahan dan logging.

Dean Thomas
sumber