qtlog 日志库https://github.com/mrcofield/qtlogqtlogviewer 日志数据查看工具合并到qtlog日志库中 支持6个日志级别[致命,
错误, 警告, 信息, 调试, 跟踪].
支持3种输出方式[控制台, 文本文件,
数据库文件].
支持定向输出(例子: 致命和错误存到文本当中, 调试和跟踪存到数据库当中, 所有数据在控制台
显示).
支持独立级别设定, 级别优先级由高到低是: Object Logger > Root Logger; Appender有单独的级别设定.
示例代码:
main.cpp
- #include <QtGui/QApplication>
- #include "mainwindow.h"
- #include <QtLog/QtLog>
- int main(int argc, char *argv[])
- {
- QApplication a(argc, argv);
- // RootLogger的级别设置成为Fatal和Debug.
- QtLog::rootLogger()->setLevels(QLogLevels() | QtLog::Fatal |QtLog::Debug);
- // 定义一个控制台输出Appender.
- QConsoleAppender consoleAppender;
- // 如果每个Appender不指定记录的级别, 默认使用RootLogger的级别.
- // consoleAppender.setLevels(QtLog::All);
- // 将ConsoleAppender添加到记录队列中.
- QtLog::rootLogger()->addAppender(&consoleAppender);
- // 这条消息将被忽略, 因为RootLogger现在只记录Fatal和Debug的.
- QtLog::rootLogger()->debug("This message will be ignored.");
- // 这条日记将被输出到控制台.
- QtLog::rootLogger()->fatal("This message will be recorded.");
- // 将记录级别修改为全部记录.
- QtLog::rootLogger()->setLevels(QtLog::All);
- // SQLITE数据库文件.
- QSQLiteAppender sqliteAppender(QString("test.any"));
- // 添加进去.
- QtLog::rootLogger()->addAppender(&sqliteAppender);
- // 如果编译时候定义了QTLOG_LOCALE_SUPPORT, 写入中文也是可以的.
- QtLog::rootLogger()->error("这个消息是中文的, 不会被忽略.");
- MainWindow w;
- w.show();
- return a.exec();
- }
mainwindow.h
- #ifndef MAINWINDOW_H
- #define MAINWINDOW_H
- #include <QMainWindow>
- #include <QtLog/QtLog>
- namespace Ui {
- class MainWindow;
- }
- class MainWindow : public QMainWindow
- {
- Q_OBJECT
- // 这里定义日志宏
- Q_LOGGER
- public:
- explicit MainWindow(QWidget *parent = 0);
- ~MainWindow();
- private:
- Ui::MainWindow *ui;
- };
- #endif // MAINWINDOW_H
mainwindow.cpp
- #include "mainwindow.h"
- #include "ui_mainwindow.h"
- MainWindow::MainWindow(QWidget *parent) :
- QMainWindow(parent),
- ui(new Ui::MainWindow)
- {
- ui->setupUi(this);
- // 每个对象可以指定自己的记录级别, 如果不设置就使用RootLogger的级别.
- logger()->setLevels(QtLog::All);
- // 添加一个文本记录器. 这样本对象的日志将会被单独记录.
- logger()->addAppender(new QTextFileAppender(QString("test.txt"), this));
- // 这条信息将会被记录下来. 判定顺序是ObjectLogger->RootLogger->Appender.
- logger()->warn("This is a warnning message.");
- }
- MainWindow::~MainWindow()
- {
- delete ui;
- }
运行结果:
QTextFileAppender
window.open('http://www.qtcn.org/bbs/attachment/Mon_1110/44_107504_d6f3f1f789748e0.png?64');" style="max-width:700px;max-height:700px;" onload="if(is_ie6&&this.offsetWidth>700)this.width=700;" > QConsoleAppender
QDBFileAppender
这个qlogviewer的图标还
没有换, 找不到素材, 左边一列是调整显示级别的, 上面两个QComboBox, 左边的是类名, 右边的是对象名. 因为是数据库存储, 可以进行对应的查询操作.