Apa perbedaan antara log4net dan ELMAH?


108

Beberapa orang menggunakan ELMAH sebagai pengganti log4net. Apa yang membuatnya lebih baik?

Saya mengetahui tentang ELMAH dalam jawaban atas pertanyaan Stack Overflow Bagaimana cara saya masuk ke C #?



Sekarang inti .net ada dalam gambar, apakah skenario berubah? (elmah tidak mendukung .net core mulai Jan 2018).
Chaitanya Gadkari

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.


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.


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.


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.



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.


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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.