• 20784阅读
  • 38回复

Qt的日志库 [复制链接]

上一主题 下一主题
 

图酷模式  只看楼主 倒序阅读 楼主  发表于: 2011-10-11
qtlog 日志库
https://github.com/mrcofield/qtlog
qtlogviewer 日志数据查看工具
合并到qtlog日志库中


支持6个日志级别[致命, 错误, 警告, 信息, 调试, 跟踪].
支持3种输出方式[控制台, 文本文件, 数据库文件].
支持定向输出(例子: 致命和错误存到文本当中, 调试和跟踪存到数据库当中, 所有数据在控制台显示).
支持独立级别设定, 级别优先级由高到低是: Object Logger > Root Logger; Appender有单独的级别设定.


示例代码:
main.cpp
  1. #include <QtGui/QApplication>
  2. #include "mainwindow.h"
  3. #include <QtLog/QtLog>
  4. int main(int argc, char *argv[])
  5. {
  6.     QApplication a(argc, argv);
  7.     // RootLogger的级别设置成为Fatal和Debug.
  8.     QtLog::rootLogger()->setLevels(QLogLevels() | QtLog::Fatal |QtLog::Debug);
  9.     // 定义一个控制台输出Appender.
  10.     QConsoleAppender consoleAppender;
  11.     // 如果每个Appender不指定记录的级别, 默认使用RootLogger的级别.
  12.     // consoleAppender.setLevels(QtLog::All);
  13.     // 将ConsoleAppender添加到记录队列中.
  14.     QtLog::rootLogger()->addAppender(&consoleAppender);
  15.     // 这条消息将被忽略, 因为RootLogger现在只记录Fatal和Debug的.
  16.     QtLog::rootLogger()->debug("This message will be ignored.");
  17.     // 这条日记将被输出到控制台.
  18.     QtLog::rootLogger()->fatal("This message will be recorded.");
  19.     // 将记录级别修改为全部记录.
  20.     QtLog::rootLogger()->setLevels(QtLog::All);
  21.     // SQLITE数据库文件.
  22.     QSQLiteAppender sqliteAppender(QString("test.any"));
  23.     // 添加进去.
  24.     QtLog::rootLogger()->addAppender(&sqliteAppender);
  25.     // 如果编译时候定义了QTLOG_LOCALE_SUPPORT, 写入中文也是可以的.
  26.     QtLog::rootLogger()->error("这个消息是中文的, 不会被忽略.");
  27.     MainWindow w;
  28.     w.show();
  29.     return a.exec();
  30. }
mainwindow.h
  1. #ifndef MAINWINDOW_H
  2. #define MAINWINDOW_H
  3. #include <QMainWindow>
  4. #include <QtLog/QtLog>
  5. namespace Ui {
  6.     class MainWindow;
  7. }
  8. class MainWindow : public QMainWindow
  9. {
  10.     Q_OBJECT
  11.     // 这里定义日志宏
  12.     Q_LOGGER
  13. public:
  14.     explicit MainWindow(QWidget *parent = 0);
  15.     ~MainWindow();
  16. private:
  17.     Ui::MainWindow *ui;
  18. };
  19. #endif // MAINWINDOW_H
mainwindow.cpp
  1. #include "mainwindow.h"
  2. #include "ui_mainwindow.h"
  3. MainWindow::MainWindow(QWidget *parent) :
  4.     QMainWindow(parent),
  5.     ui(new Ui::MainWindow)
  6. {
  7.     ui->setupUi(this);
  8.     // 每个对象可以指定自己的记录级别, 如果不设置就使用RootLogger的级别.
  9.     logger()->setLevels(QtLog::All);
  10.     // 添加一个文本记录器. 这样本对象的日志将会被单独记录.
  11.     logger()->addAppender(new QTextFileAppender(QString("test.txt"), this));
  12.     // 这条信息将会被记录下来. 判定顺序是ObjectLogger->RootLogger->Appender.
  13.     logger()->warn("This is a warnning message.");
  14. }
  15. MainWindow::~MainWindow()
  16. {
  17.     delete ui;
  18. }




运行结果:
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, 左边的是类名, 右边的是对象名. 因为是数据库存储, 可以进行对应的查询操作.







离线ppdayz

只看该作者 1楼 发表于: 2011-10-11
期待源码和例子

只看该作者 2楼 发表于: 2011-10-11
源代码和查看工具已经在网上有Git版本库, 上面的就是例子. 愿意帮助测试的留下邮箱, 我会把版本库的链接通过邮件发送给你们.
离线toby520

只看该作者 3楼 发表于: 2011-10-11
向人才致敬 向人才学习
QtQML多多指教开发社区 http://qtclub.heilqt.com
将QtCoding进行到底
关注移动互联网,关注金融
开发跨平台客户端,服务于金融行业
专业定制界面
群号:312125701   373955953(qml控件定做)
离线herony

只看该作者 4楼 发表于: 2011-10-12
求。。。。gxy_880518@qq.com

只看该作者 5楼 发表于: 2011-10-12
herony 邮件已经发出.
离线ppdayz

只看该作者 6楼 发表于: 2011-10-12
ppdayz@qq.com 谢谢拉

只看该作者 7楼 发表于: 2011-10-12
ppdayz 邮件已经发出.
离线luoyang

只看该作者 8楼 发表于: 2011-10-12
282152732@qq.com
互帮互助,共同进步,谢谢~~

只看该作者 9楼 发表于: 2011-10-13
luoyang 邮件已经发出.
离线hxing
只看该作者 10楼 发表于: 2011-10-13
seem.sky@gmail.com
共同进步

只看该作者 11楼 发表于: 2011-10-13
h xing 邮件已经发出.
离线jorneyr

只看该作者 12楼 发表于: 2011-10-21
离线lost
只看该作者 13楼 发表于: 2011-10-25
离线frogoscar

只看该作者 14楼 发表于: 2011-10-26

只看该作者 15楼 发表于: 2011-11-18
jorneyr lost frogoscar 邮件已经发出.
离线流潋紫
只看该作者 16楼 发表于: 2011-11-18
Re:Qt的轻量级日志记录库
我也要呢
添岁不是成长,忍让不是懦弱!
离线zengqingguo

只看该作者 17楼 发表于: 2011-11-26
zeng5288@163.com 谢谢啦
离线tomasg
只看该作者 18楼 发表于: 2012-01-02
也给我一份,tomasgeng@gmail.com
谢谢啦!
离线沙漠之源

只看该作者 19楼 发表于: 2012-01-03
能否也给我发一份? caz2008@126.com
离线zdh8675

只看该作者 20楼 发表于: 2012-02-22
247790425@qq.com。平时开发基本都要写日志文件。谢谢。

只看该作者 21楼 发表于: 2012-02-24
891843745@qq.com 谢谢啦。

只看该作者 22楼 发表于: 2012-02-24
好像只能在window下可以编译,在linux编译似乎有问题丫
离线yanghuabo199

只看该作者 23楼 发表于: 2012-03-19
有才的大神啊 yanghuabo1990@126.com
离线shucan3652
只看该作者 24楼 发表于: 2012-08-26
感谢lz分享,icanshu@gmail.com
离线atmats
只看该作者 25楼 发表于: 2012-09-04
大神,也给我一份吧 2604308572@qq.com,谢谢了
离线longzhuer

只看该作者 26楼 发表于: 2012-11-10
xiaomailong@foxmail.com,谢谢了,学习中
命,失败者的借口;运,成功者的谦词。
离线winembedded

只看该作者 27楼 发表于: 2012-11-10
winembedded@163.com

期待,谢谢
离线liuyuanan

只看该作者 28楼 发表于: 2012-11-13
回 楼主(咖啡猫大人) 的帖子
     很好很强大
离线lhxzui

只看该作者 29楼 发表于: 2012-11-15
iuzxhl@qq.com
多谢啦
离线likecg
只看该作者 30楼 发表于: 2012-12-07
和apache 的qt4log不一样嘛,如果不一样发我一份84579712@qq.com
离线123220063

只看该作者 31楼 发表于: 2012-12-07
离线易凡明
只看该作者 32楼 发表于: 2013-01-02
学习,希望能发一份  522700680@qq.com
离线soulcxf

只看该作者 33楼 发表于: 2013-01-04
soulcxf@163.com
学习学习 期待源码 ~
离线和尚也要

只看该作者 34楼 发表于: 2014-11-01
1352913549@qq.com 楼主能不能辛苦给我发过来一份啊?
阿斯顿发送对方
离线prcseraph

只看该作者 35楼 发表于: 2014-11-01
328154026@qq.com 麻烦楼主了,能否也给我一份源码?谢谢了
离线moonlqer

只看该作者 36楼 发表于: 2014-11-11
学习Qt,分享有趣的想法,帮助所有人
离线longzhuer

只看该作者 37楼 发表于: 2014-11-12
xiaomailong@foxmail.com,大神也给我发一份学习一下,谢谢了
命,失败者的借口;运,成功者的谦词。
离线手中沙

只看该作者 38楼 发表于: 2014-11-12
190292165@qq.com   感谢分享!
快速回复
限100 字节
 
上一个 下一个