วิธีการเขียนบันทึก

สารบัญ:

วิธีการเขียนบันทึก
วิธีการเขียนบันทึก

วีดีโอ: วิธีการเขียนบันทึก

วีดีโอ: วิธีการเขียนบันทึก
วีดีโอ: น่าเสียดายมาก ถ้าไม่ได้เขียนบันทึกตั้งแต่วันนี้ | Podcast #30 2024, อาจ
Anonim

ในปัจจุบัน แอปพลิเคชันและแอปพลิเคชันระบบส่วนใหญ่จะบันทึกข้อมูลเกี่ยวกับกระบวนการทำงาน ข้อผิดพลาดและความล้มเหลวเป็นระยะๆ ในบันทึกพิเศษที่เรียกว่าบันทึก ระบบปฏิบัติการเอนกประสงค์ส่วนใหญ่ให้บริการที่อนุญาตให้คุณเขียนบันทึกโดยใช้อินเทอร์เฟซการเขียนโปรแกรมมาตรฐาน

วิธีการเขียนบันทึก
วิธีการเขียนบันทึก

จำเป็น

  • - คอมไพเลอร์ C;
  • - SDK แพลตฟอร์ม Windows;
  • - พัฒนาแพ็คเกจสำหรับ glibc

คำแนะนำ

ขั้นตอนที่ 1

เพิ่มการสนับสนุนสำหรับการเขียนบันทึกลงในบันทึกของระบบจากแอปพลิเคชันของคุณที่ออกแบบมาเพื่อทำงานภายใต้ระบบปฏิบัติการของตระกูล Windows

ใช้ฟังก์ชัน RegisterEventSource API เพื่อลงทะเบียนแอปพลิเคชันเป็นแหล่งเหตุการณ์ ฟังก์ชัน ReportEvent เพื่อเพิ่มรายการลงในบันทึก และฟังก์ชัน DeregisterEventSource เพื่อปิดจุดจับที่ส่งกลับโดย RegisterEventSource

เหมาะสมที่จะเรียก RegisterEventSource ระหว่างการเริ่มต้นแอปพลิเคชันและบันทึก descriptor ที่ส่งคืนตลอดเวลา เพื่อให้สามารถวางรายการในบันทึกจากที่ต่างๆ ในโปรแกรมได้ ตัวอย่างที่ง่ายที่สุดในการเขียนบันทึกของ Windows อาจมีลักษณะดังนี้:

จัดการ hLog = RegisterEventSource (NULL, "MyApplicationName");

ถ้า (hLog! = NULL)

{

ถ้า (ReportEvent (hLog, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 1, 0, "ข้อความข้อความ / 0", NULL))

{

// บันทึกเหตุการณ์สำเร็จแล้ว

}

DeregisterEventSource (hLog);

}

รายละเอียดเพิ่มเติมเกี่ยวกับความหมายของฟังก์ชัน ReportEvent สามารถพบได้ใน MSDN ที่ https://msdn.microsoft.com/en-us/library/windows/desktop/aa363679%28v=vs.85%29.aspx นอกจากนี้ คุณต้องใส่ข้อมูลบางอย่างเกี่ยวกับโมดูลปฏิบัติการของแอปพลิเคชันในรีจิสทรีของระบบ และเพิ่มทรัพยากรในรูปแบบเฉพาะลงในโมดูลเองหรือไลบรารีไดนามิกของบริษัทอื่น สำหรับข้อมูลเพิ่มเติมเกี่ยวกับรีจิสตรีคีย์สำหรับบริการบันทึกเหตุการณ์ โปรดดูที่

ขั้นตอนที่ 2

การบันทึกบนระบบปฏิบัติการที่เข้ากันได้กับ Linux สามารถทำได้โดยใช้ syslog daemon บริการนี้มีอินเทอร์เฟซระดับแอปพลิเคชันในรูปแบบของชุดฟังก์ชัน ซึ่งการประกาศจะอยู่ในไฟล์ส่วนหัว syslog.h

ใช้ฟังก์ชัน openlog เพื่อสร้างการเชื่อมต่อกับบริการ syslog จากแอปพลิเคชันหรือไลบรารี เรียกใช้ฟังก์ชัน syslog หรือ vsyslog เพื่อใส่ข้อความลงในบันทึก หลังจากสิ้นสุดกิจกรรมการบันทึกหรือเมื่อแอปพลิเคชันออก ให้ปิดการเชื่อมต่อกับบริการโดยการเรียกใช้ฟังก์ชัน closelog นอกจากนี้ คุณสามารถกำหนดการตั้งค่าเพื่อละเว้นการเรียกที่เพิ่มบันทึกเหตุการณ์ที่มีลำดับความสำคัญเฉพาะโดยใช้ฟังก์ชัน setlogmask ตัวอย่างการเขียนข้อความไปยังบันทึกอาจมีลักษณะดังนี้:

openlog ("MyApplication", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);

syslog (LOG_NOTICE, "MyApplication เปิดตัวด้วย PID% d", getuid ());

syslog (LOG_INFO, "ข้อความข้อมูล!");

closelog ();

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับพารามิเตอร์ของฟังก์ชัน syslog API โปรดดูเอกสารข้อมูล libc

ขั้นตอนที่ 3

เขียนบันทึกไปยังไฟล์ที่กำหนดเองโดยใช้ระบบย่อยการคงอยู่ของเหตุการณ์ของคุณเอง วิธีแก้ปัญหาที่ง่ายที่สุดวิธีหนึ่งสำหรับปัญหานี้คือการสร้างฟังก์ชันหลายอย่างในขอบเขตส่วนกลาง โดยหนึ่งในนั้นจะเปิดไฟล์ที่มีชื่อเฉพาะในโหมดเพิ่มข้อมูล ฟังก์ชันที่สองปิด และฟังก์ชันที่สามเพิ่มสตริงข้อความที่ส่งผ่านไปยังไฟล์ดังกล่าว พารามิเตอร์ของไฟล์นี้ ตามแนวคิด โซลูชันนี้คล้ายกับอินเทอร์เฟซการเขียนโปรแกรม syslog ใน Linux

ใช้ฟังก์ชัน fopen และ fclose ของไลบรารีมาตรฐาน C เพื่อเปิดและปิดไฟล์ตามลำดับ โทร fwrite เพื่อเพิ่มข้อมูลลงในไฟล์ คุณยังสามารถใช้ฟังก์ชันเฉพาะของแพลตฟอร์ม (เช่น CreateFile ภายใต้ Windows) และวิธีการของออบเจ็กต์ของเฟรมเวิร์กที่ใช้ซึ่งสรุปฟังก์ชันการทำงานของการทำงานกับไฟล์