2013-06-25 30 views
12

Tôi đã thực hiện một số nghiên cứu về Ghi nhật ký Qt 5.0 và dường như đã xây dựng trong các lớp để ghi nhật ký. Tôi gặp khó khăn khi tìm một ví dụ. Tôi đã đặt các lớp tôi tin là có liên quan ở đây.QT 5.0 - Ghi nhật ký được xây dựng?

QMessageLogger

QMessageLogContext

tôi có thể thấy khoảng cách để tạo ra các đối tượng QMessageLogger từ các tài liệu, nhưng làm thế nào tôi có thể tạo một tập tin đăng nhập và gắn với nó?

+1

Bạn có ý gì khi "nối thêm vào"? – Huy

+0

tôi có nghĩa là đăng nhập vào tệp, tôi đã chỉnh sửa câu hỏi để rõ ràng hơn. Cảm ơn đã giúp đỡ. – rreeves

Trả lời

33

Theo mặc định sử dụng qDebug(), qWarning(), v.v. sẽ cho phép bạn ghi thông tin ra bàn điều khiển.

#include <QtDebug> 
qDebug() << "Hello world!"; 

QMessageLogger được thiết kế để tận dụng đặc biệt C++ macro (ví dụ như chức năng, dây chuyền, tập tin)

QMessageLogger(__FILE__, __LINE__, 0).debug() << "Hello world!"; 

Trong Qt5 logger nhắn được sử dụng đằng sau hậu trường kể từ qDebug() là một macro mà sẽ cuối cùng khởi tạo một thể hiện của QMessageLogger. Vì vậy, tôi chỉ cần đi với việc sử dụng qDebug thông thường().

QMessageLogContext chứa nội dung tôi muốn xem là "siêu dữ liệu", tức là tệp, số dòng, v.v. mà câu lệnh qDebug() được gọi từ đó. Thông thường bạn sẽ quan tâm đến bối cảnh log nếu bạn định nghĩa QtMessageHandler của riêng bạn (xem qInstallMessageHandler()).

Trình xử lý tin nhắn cho phép kiểm soát nhiều hơn cơ chế ghi nhật ký - như gửi thông tin ghi nhật ký đến máy chủ ghi nhật ký tùy chỉnh hoặc thậm chí tới một tệp.

Theo quy định trong Tài liệu Qt, tạo một handler thông báo tùy chỉnh rất đơn giản:

void myMessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg) 
{ 
    std::cout << msg.toStdString(); 
} 

Kiểm tra ví dụ tốt hơn và explanations here.

Các vấn đề liên quan