บางคนใช้ELMAHแทน log4net อะไรทำให้ดีขึ้น?
ฉันค้นพบ ELMAH ในคำตอบสำหรับคำถาม Stack Overflow ฉันจะเข้าสู่ระบบ C # ได้อย่างไร
บางคนใช้ELMAHแทน log4net อะไรทำให้ดีขึ้น?
ฉันค้นพบ ELMAH ในคำตอบสำหรับคำถาม Stack Overflow ฉันจะเข้าสู่ระบบ 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 ไม่มีฟรอนต์เอนด์มีเพียงซิงก์บันทึกต่างๆ (Appenders) ที่สามารถส่งข้อความบันทึกของคุณไปยังสิ่งต่างๆเช่นไฟล์บันทึกเซิร์ฟเวอร์ syslog ฐานข้อมูลเป็นต้น
ความแตกต่างที่สำคัญคือ ELMAH บันทึกข้อยกเว้นของแอปพลิเคชันที่ไม่ได้จัดการ log4net บันทึกสิ่งที่คุณบอกให้เข้าสู่ระบบ คุณสามารถกำหนดค่า log4net เพื่อบันทึกข้อยกเว้นที่ไม่สามารถจัดการได้ แต่ ELMAH รวบรวมข้อมูลที่เป็นประโยชน์มากมายจากกล่อง
ELMAH ทำงานโดยการสร้างโมดูล HTTP ที่เชื่อมโยงเข้ากับเหตุการณ์ข้อผิดพลาดจากนั้นทำการบันทึก สิ่งนี้สามารถขัดขวางและทำลายได้อย่างง่ายดายด้วยการออกแบบที่ไม่ดี Log4Net อาจต้องการการทำงานล่วงหน้าเพิ่มเติม แต่ถ้าคุณใช้เฟรมเวิร์ก AOP และนำไปใช้กับคลาสของคุณหรือแม้แต่แอสเซมบลีคุณจะสามารถบันทึกข้อยกเว้นได้ดีขึ้นมากโดยใช้รหัสและความพยายามเพียงเล็กน้อย
ELMAH ใช้งานได้ก็ต่อเมื่อมีการเข้าถึง HttpContext ซึ่งอาจทำได้ยากในบริการ WCF ดังนั้นคุณจะต้องใช้คนตัดไม้อื่น ๆ ใน WCF อยู่ดี ทำไมไม่ใช้วิธีแก้ปัญหาเดียวที่เป็นสากลมากขึ้น
ELMAH:
Log4net:
โปรแกรมประยุกต์บนเว็บ
แอปพลิเคชัน Windows
ELMAHใช้เป็นพิเศษสำหรับเว็บแอปพลิเคชันในขณะที่log4netใช้กับทั้งเว็บและแอปพลิเคชัน Windows ELMAH มีข้อดีมากกว่า log4net ในเว็บแอปพลิเคชัน
ELMAH มีประสิทธิภาพมาก แต่ก็มีความเฉพาะเจาะจงมากในสิ่งที่ทำ มันทำงานให้คุณได้มากในขณะที่ฉันเชื่อว่า Log4Net ต้องการให้คุณจัดการและบันทึกข้อผิดพลาด