log4net และ ELMAH ต่างกันอย่างไร


108

บางคนใช้ELMAHแทน log4net อะไรทำให้ดีขึ้น?

ฉันค้นพบ ELMAH ในคำตอบสำหรับคำถาม Stack Overflow ฉันจะเข้าสู่ระบบ C # ได้อย่างไร


เป็นไปได้ที่จะซ้ำกันของstackoverflow.com/questions/800009/…
empi

ตอนนี้. net core อยู่ในภาพแล้วสถานการณ์เปลี่ยนไปหรือไม่? (elmah ไม่รองรับ. net core ณ เดือนมกราคม 2018)
Chaitanya Gadkari

คำตอบ:


92

ELMAH มีจุดประสงค์ในการติดตามข้อผิดพลาดและข้อยกเว้นสำหรับเว็บแอปพลิเคชันของคุณและช่วยให้คุณสามารถบันทึกหรือดูข้อยกเว้นเหล่านั้นได้อย่างง่ายดายผ่านกลไกต่างๆ (SQL, RSS, Twitter, ไฟล์, อีเมล ฯลฯ ) หากคุณไม่มีข้อยกเว้นในตัวการจัดการ ELMAH ส่วนใหญ่จะทำให้คุณได้รับสิ่งที่คุณกำลังมองหาในแง่ของการจัดการข้อยกเว้นในสภาพแวดล้อมเว็บแอปพลิเคชัน

Log4net สามารถใช้สำหรับการบันทึกข้อยกเว้นได้เช่นกันอย่างไรก็ตามคุณอาจต้องม้วนตัวจัดการของคุณเองเพื่อเสียบเข้ากับเว็บแอปพลิเคชันของคุณ Log4net จะส่องแสงเหนือ ELMAH หากคุณต้องการบันทึกข้อมูลประเภทอื่น ๆ เนื่องจาก log4net เป็นกรอบการบันทึกสำหรับวัตถุประสงค์ทั่วไป Log4net ยังสามารถใช้ในแอปพลิเคชัน. NET ได้เกือบทุกชนิด


3
log4net ช่วยให้คุณควบคุมได้มากขึ้น
DarthVader

6
คุณจะได้รับสิ่งที่ดีที่สุดจากทั้งสองโลกโดยใช้ ELMAH Appender นี้สำหรับ 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 ไม่มีฟรอนต์เอนด์มีเพียงซิงก์บันทึกต่างๆ (Appenders) ที่สามารถส่งข้อความบันทึกของคุณไปยังสิ่งต่างๆเช่นไฟล์บันทึกเซิร์ฟเวอร์ syslog ฐานข้อมูลเป็นต้น


23
การแก้ไขหนึ่งครั้ง Elmah มี Api ที่นักพัฒนาสามารถโต้ตอบได้ ตัวอย่างเช่นการส่งสัญญาณทำได้ผ่าน Elmah Api
Ed DeGagne

8
แก้ไขอีกหรือไม่ ELMAH เป็น. NET HttpModule / HttpHandler ไม่ใช่ปลั๊กอิน IIS ARR เป็นปลั๊กอิน ไม่ใช่ ELMAH
Maxime Rouiller

คุณตอบกลับความคิดเห็นอย่างไร?
Peter Mortensen

36

ความแตกต่างที่สำคัญคือ ELMAH บันทึกข้อยกเว้นของแอปพลิเคชันที่ไม่ได้จัดการ log4net บันทึกสิ่งที่คุณบอกให้เข้าสู่ระบบ คุณสามารถกำหนดค่า log4net เพื่อบันทึกข้อยกเว้นที่ไม่สามารถจัดการได้ แต่ ELMAH รวบรวมข้อมูลที่เป็นประโยชน์มากมายจากกล่อง


1
ELMAH รวบรวมข้อมูลที่เป็นประโยชน์มากมายนอกกรอบหากคุณกำหนดค่าอย่างถูกต้อง ในระยะเวลาเดียวกันคุณสามารถทำเช่นเดียวกันกับ log4net ด้วยการควบคุมที่มากขึ้น
DarthVader

DarthVader - คุณมีตัวอย่างการกำหนดค่า log4net ที่ทำสิ่งเดียวกันหรือไม่?
JasonD

5
ELMAH รวบรวมข้อมูลที่เป็นประโยชน์มากมายนอกกรอบโดยไม่มีการกำหนดค่า ด้วยการกำหนดค่าเพิ่มเติมจะจัดการทั้งข้อยกเว้นที่ไม่มีการจัดการและข้อยกเว้นที่จัดการ
Trevor de Koekkoek

5

ELMAH ทำงานโดยการสร้างโมดูล HTTP ที่เชื่อมโยงเข้ากับเหตุการณ์ข้อผิดพลาดจากนั้นทำการบันทึก สิ่งนี้สามารถขัดขวางและทำลายได้อย่างง่ายดายด้วยการออกแบบที่ไม่ดี Log4Net อาจต้องการการทำงานล่วงหน้าเพิ่มเติม แต่ถ้าคุณใช้เฟรมเวิร์ก AOP และนำไปใช้กับคลาสของคุณหรือแม้แต่แอสเซมบลีคุณจะสามารถบันทึกข้อยกเว้นได้ดีขึ้นมากโดยใช้รหัสและความพยายามเพียงเล็กน้อย

ELMAH ใช้งานได้ก็ต่อเมื่อมีการเข้าถึง HttpContext ซึ่งอาจทำได้ยากในบริการ WCF ดังนั้นคุณจะต้องใช้คนตัดไม้อื่น ๆ ใน WCF อยู่ดี ทำไมไม่ใช้วิธีแก้ปัญหาเดียวที่เป็นสากลมากขึ้น


4

ELMAH:

  • โปรแกรมประยุกต์บนเว็บ

Log4net:

  • โปรแกรมประยุกต์บนเว็บ

  • แอปพลิเคชัน Windows

ข้อมูลอ้างอิงเพิ่มเติม: ref_1 ref_2


1

ELMAHใช้เป็นพิเศษสำหรับเว็บแอปพลิเคชันในขณะที่log4netใช้กับทั้งเว็บและแอปพลิเคชัน Windows ELMAH มีข้อดีมากกว่า log4net ในเว็บแอปพลิเคชัน


5
ข้อดีเหล่านั้นคืออะไร? ฉันจะทำ ASP.NET เร็ว ๆ นี้ดังนั้นฉันต้องการทราบความคิดเห็นของคุณ ฉันยังคงเป็นคนขอทานใน. NET ดังนั้นจึงยากกว่าสำหรับฉันที่จะตีความสิ่งที่พวกเขาพูดในไซต์ของพวกเขา
IAdapter

คุณสามารถดูรายงานได้โดยไม่ต้องเขียนโค้ดใด ๆ ดูคุณสมบัติของ elmah ที่นี่code.google.com/p/elmah
Adeel

Elmah มีข้อ จำกัด มากและมีเพียง "avantage" เท่านั้นที่เป็นรายงาน แต่ จำกัด เฉพาะเว็บแอปที่สามารถเข้าถึง HttpContext ได้ คุณสามารถมีข้อมูลบันทึกของคนตัดไม้อื่น ๆ ไปยังแหล่งอื่น ๆ อีกมากมายที่สามารถรายงานได้
Dustin Davis

0

ELMAH มีประสิทธิภาพมาก แต่ก็มีความเฉพาะเจาะจงมากในสิ่งที่ทำ มันทำงานให้คุณได้มากในขณะที่ฉันเชื่อว่า Log4Net ต้องการให้คุณจัดการและบันทึกข้อผิดพลาด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.