Ngày nay, hầu hết các ứng dụng ứng dụng và hệ thống đều lưu thông tin định kỳ về quá trình làm việc của chúng, các lỗi và hỏng hóc trong các bản ghi đặc biệt gọi là nhật ký. Hầu hết các hệ điều hành có mục đích chung đều cung cấp các dịch vụ cho phép bạn viết nhật ký bằng giao diện lập trình tiêu chuẩn.
Cần thiết
- - Trình biên dịch C;
- - Windows Platform SDK;
- - Phát triển gói cho glibc.
Hướng dẫn
Bước 1
Thêm hỗ trợ ghi nhật ký vào nhật ký hệ thống từ ứng dụng của bạn được thiết kế để hoạt động trên các hệ điều hành thuộc họ Windows.
Sử dụng hàm API RegisterEventSource để đăng ký ứng dụng làm nguồn sự kiện, hàm ReportEvent để thêm mục nhập vào nhật ký và hàm DeregisterEventSource để đóng xử lý do RegisterEventSource trả về.
Sẽ rất hợp lý khi gọi RegisterEventSource trong quá trình khởi tạo ứng dụng và lưu bộ mô tả trả về mọi lúc, để các mục nhập trong nhật ký có thể được đặt từ các vị trí khác nhau trong chương trình. Ví dụ đơn giản nhất về việc ghi vào nhật ký Windows có thể trông như thế này:
HANDLE hLog = RegisterEventSource (NULL, "MyApplicationName");
if (hLog! = NULL)
{
if (ReportEvent (hLog, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 1, 0, "Nội dung tin nhắn / 0", NULL))
{
// sự kiện đã được ghi thành công
}
DeregisterEventSource (hLog);
}
Bạn có thể tìm thấy thêm chi tiết về ngữ nghĩa của hàm ReportEvent trong MSDN tại https://msdn.microsoft.com/en-us/library/windows/desktop/aa363679%28v=vs.85%29.aspx. Ngoài ra, bạn cần đặt một số dữ liệu về mô-đun thực thi của ứng dụng trong sổ đăng ký hệ thống và thêm tài nguyên ở định dạng cụ thể vào chính mô-đun hoặc thư viện động của bên thứ ba. Để biết thêm thông tin về khóa đăng ký cho dịch vụ nhật ký sự kiện, hãy xem
Bước 2
Đăng nhập trên các hệ điều hành tương thích với Linux thường có thể được thực hiện bằng cách sử dụng daemon nhật ký hệ thống. Dịch vụ này có giao diện cấp ứng dụng dưới dạng một tập hợp các chức năng, các khai báo của chúng được đặt trong tệp tiêu đề syslog.h.
Sử dụng chức năng openlog để tạo kết nối với dịch vụ nhật ký hệ thống từ một ứng dụng hoặc thư viện. Gọi hàm syslog hoặc vsyslog để đưa tin nhắn vào nhật ký. Sau khi kết thúc ghi sự kiện hoặc khi ứng dụng thoát, hãy đóng kết nối với dịch vụ bằng cách gọi hàm bao đóng. Ngoài ra, bạn có thể định cấu hình cài đặt để bỏ qua các cuộc gọi thêm bản ghi sự kiện với mức độ ưu tiên cụ thể bằng cách sử dụng hàm setlogmask. Ví dụ về việc ghi thông báo vào nhật ký có thể trông như thế này:
openlog ("MyApplication", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);
syslog (LOG_NOTICE, "MyApplication được khởi chạy với PID% d", getuid ());
syslog (LOG_INFO, "Thông báo thông tin!");
Closeelog ();
Để biết thêm thông tin về các tham số của các hàm API nhật ký hệ thống, hãy xem tài liệu thông tin libc.
Bước 3
Ghi nhật ký vào các tệp tùy ý bằng cách sử dụng cách triển khai hệ thống con độ bền sự kiện của riêng bạn. Một trong những giải pháp đơn giản nhất cho vấn đề này là tạo một số hàm trong phạm vi toàn cục, một trong số đó mở một tệp có tên cụ thể trong chế độ thêm thông tin, hàm thứ hai đóng nó và hàm thứ ba thêm một chuỗi thông báo được chuyển đến nó dưới dạng một tham số cho tệp này. Về mặt khái niệm, giải pháp này giống với giao diện lập trình nhật ký hệ thống trong Linux.
Sử dụng các hàm fopen và fclose của thư viện tiêu chuẩn C để mở và đóng tệp tương ứng. Gọi fwrite để thêm thông tin vào tệp. Bạn cũng có thể sử dụng các chức năng dành riêng cho nền tảng (ví dụ: CreateFile trong Windows) và các phương thức của các đối tượng của khung được sử dụng để đóng gói chức năng làm việc với tệp.