Log4net เป็นเวอร์ชัน .net ของ Apache log4j ซึ่งเป็นชุดของเครื่องมือบันทึกการกำหนดค่า XML เมื่อเร็วๆ นี้ มีโปรแกรมที่ต้องใช้ระบบบันทึก ฉันจึงตัดสินใจศึกษามัน ขอบคุณ Hao Wei สำหรับคำแนะนำ
ระบบ log4net แบ่งออกเป็น 7 ระดับบันทึก หากตั้งค่าเป็น "WARN" DEBUG และ INFO จะไม่ถูกบันทึก ดังต่อไปนี้:
1. ทั้งหมด
2. ดีบัก
3. ข้อมูล
4. คำเตือน
5. ข้อผิด
พลาด6. ร้ายแรง
7. ปิด
การสร้างแอปพลิเคชันตัวอย่าง
ขั้นตอนที่ 1: ดาวน์โหลด log4net
และไปที่ logging.apache.org/log4net เพื่อรับเวอร์ชันล่าสุด ในตัวอย่างที่ฉันใช้ incubating-log4net-1.2.9-beta.zip ฉันหวังว่าจะได้เวอร์ชันอย่างเป็นทางการ
ขั้นตอนที่ 2: สร้างแอปพลิเคชันเว็บ ASP.NET
ฉันจะไม่ลงรายละเอียดเกี่ยวกับการสร้างสิ่งนี้ ดังที่แสดงใน log4net-1.2.0-beta8binnet ค้นหา dll ที่เกี่ยวข้องและเพิ่มลงในข้อมูลอ้างอิง บางเวอร์ชันไม่มี dll ที่คอมไพล์ ดังนั้นให้คอมไพล์ด้วยตนเองและใช้เวอร์ชัน .NET V1.0 เพื่อแปลงเป็น 1.1 หรือ 2.0 ฉันคิดว่านี่ไม่ใช่ข้อผิดพลาดในการทำงาน แต่เป็นความตั้งใจ หลายๆคนที่คุ้นเคยกับการเล่น Java จะเป็นเช่นนี้
การกำหนดค่าแอปพลิเคชันตัวอย่าง
ขั้นตอนที่ 3: เพิ่มข้อมูล Assembly
เปิดไฟล์ AssemblyInfo.cs และเพิ่ม:
[assembly: log4net.Config.DOMConfigurator()]
ประโยคนี้หมายความว่าระบบ log4net จะค้นหาไฟล์การกำหนดค่า Web.config โดยอัตโนมัติเพื่อรับและโหลดข้อมูลการกำหนดค่า หากคุณต้องการให้ log4net ตรวจสอบไฟล์การกำหนดค่าเมื่อใดก็ได้เพื่อโหลดซ้ำ คุณจะต้องเขียนดังนี้:
[assembly:log4net.Config.DOMConfigurator(ConfigFile="filename",ConfigFileExtension="log4net",Watch=true)]
ขั้นตอนที่ 4: หากต้องการเพิ่มข้อมูลการกำหนดค่า
คุณต้องแก้ไขไฟล์ Web.config ฉันรู้สึกประหลาดใจมากทุกครั้ง ฉันเห็นมัน. ค้นหาแท็กการกำหนดค่าและเขียน configSections ไว้ด้านล่างทันที (โดยไม่ต้องคำนึงถึงผู้อื่นเลย จะเป็นอย่างไรถ้ามีคนครอบงำเหมือนเขาล่ะ? จากนั้นก็แค่เขียนไฟล์บันทึกการกำหนดค่าของมัน! ฉันเดาว่า APACHE จะเป็นเช่นนี้) ลองดูตัวอย่าง:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler, log4net-net-1.0"
/>
</configSections >
<!-- ส่วนนี้ประกอบด้วยการตั้งค่าการกำหนดค่า log4net -->
<log4net>
<!-- กำหนดส่วนต่อท้ายเอาต์พุตบางส่วน -->
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type=" log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] <%X{auth}> - %m%n" />
< /layout>
</appender>
<!-- RollingFileAppender ดูแลการโรลลิ่งไฟล์ตามขนาดหรือวันที่ -->
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value= "C:\log\RollingLogHelloWorld.log" />
<param name="AppendToFile" value="true" />
<param name="MaxSizeRollBackups" value="10" />
<param name="MaximumFileSize" ค่า ="1000" />
<param name="RollingStyle" value="Size" />
<param name="StaticLogFileName" value="true" />
<layout type="log4net.Layout.PatternLayout">
<ชื่อพารามิเตอร์= "ConversionPattern" value="%d [%t] %-5p %-45c [%x] - %m%n" />
</layout>
</appender>
<!-- FileAppender ต่อท้ายบันทึกและเป็น จัดการด้วยตนเองหรือขนาด -->
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<param name="File" value="LogHelloWorld.log" />
<!-- ตัวอย่างการใช้ตัวแปรสภาพแวดล้อมใน params -->
<!-- <param name="File" value="${TMP}\ApplicationKit.log" /> -->
<param name="AppendToFile" value="true" />
<ประเภทโครงร่าง= "log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>
< !-- ตั้งค่าหมวดหมู่รูท เพิ่มส่วนต่อท้ายและตั้งค่าระดับเริ่มต้น -->
<root>
<level value="INFO" />
<appender-ref ref="ConsoleAppender" />
</root>
<!-- หมวดหมู่ ApplicationKit - UI การนำเสนอ -->
<logger name="WebForm1">
<level value="INFO" />
<appender-ref ref="FileAppender" />
</logger>
</log4net>
</configuration>
โปรดทราบว่าแอตทริบิวต์ NAME ของโหนด Logger ถูกตั้งค่าเป็น WebForm1 ซึ่งอ้างอิงถึงชื่อคลาส เพิ่มโหนดดังกล่าวลงในแต่ละคลาสที่ต้องเพิ่ม LOG ฉันคิดว่าเวิร์กโฟลว์ OSWORKFLOW ความยืดหยุ่น ความสะดวกสบาย และการปฏิบัติจริงมักไม่สามารถทำได้ในเวลาเดียวกัน ระดับที่นี่คือ INFO กล่าวคือ อะไรก็ตามที่ต่ำกว่า INFO จะไม่ถูกบันทึก
เรียกใช้แอปพลิเคชันตัวอย่าง
ขั้นตอนที่ 5: หากต้องการเพิ่มคลาส Log
ให้เพิ่มการอ้างอิง
โดยใช้ log4net โดยใช้ log4net.Config; // จากนั้นสร้างอินสแตนซ์หากคุณศึกษาไฟล์การกำหนดค่าอย่างรอบคอบ วิธีการประกาศนี้จะเข้าใจได้ง่าย: private static readonly log = LogManager .GetLogger("เว็บฟอร์ม1");
ขั้นตอนที่ 6: การใช้วัตถุ Log
ตอนนี้งานการกำหนดค่าทั้งหมดเสร็จสิ้นแล้ว ขั้นตอนต่อไปคือการทดสอบและเชื่อมต่อกับเลเยอร์แอปพลิเคชัน เพียงเพิ่มปุ่มในตัวจัดการเหตุการณ์การตอบสนอง Button1_Click
log.Info("สวัสดีชาวโลก ฉันเป็นคนตัดไม้");
ขั้นตอนที่ 7: เรียกใช้แอปพลิเคชัน
ตอนนี้สามารถทำงานได้แล้ว ควรมีลักษณะดังนี้:
ทุกครั้งที่คุณคลิกปุ่ม2006-02-13 10:12:30,671 [1228] INFO WebForm1 [] - สวัสดี
จะปรากฏในไฟล์วันที่ .
โลกฉันเป็นคนตัดไม้เป็นบันทึกดังกล่าว
สรุป:
ง่ายและสะดวก ต่อไปมาศึกษา SQL log กันดีกว่า 555
สำหรับข้อมูลเพิ่มเติมโปรดดู http://logging.apache.org/log4net/