博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
log4cplus使用(三)-日志重定向
阅读量:6354 次
发布时间:2019-06-22

本文共 1434 字,大约阅读时间需要 4 分钟。

本文讲述的是log4cplus日志输出到qt widget,封装了serverSocket。

    log4cplus支持用户自定义输出设备,只需要继承自Appender,或者Appender子类,并实现append成员方法,然后在 log4cplus初始化成功之后,把自定义输出设备添加到logger中,当用户向logger中输出信息时,logger会遍历自身的所有输出设备, 并按输出设备上的指定格式输出信息。
    log4cplus是线程安全的,因此在多线程下可以放心使用

    在小工具编写的过程中,作者遇到了ESP Crash问题,在网上了找了好久的资料,也没搞好,后来当然是解决了,原因:我的小工具是用vs2013写的,log4cplus库使用vs2010编 译的,后来用vs2013编译了下log4cplus,小工具一切正常;不过log4cplus自带的事例代码却开始crash了(vs2010下正 常),后来网上各种百度、谷歌,发现有的人说这是vs2013的bug,反正是最后也没解决。

    小工具运行流程:启动小工具,开启接收远端连接线程W,这样不阻塞ui主线程,当接收线程收到远端连接时,开启收据接收子线程R,来和远端交互,每个线程 更新一个widget,当线程W关闭时,关闭掉所有由W创建的子线程R,然后关闭serverSocket。R线程接收的数据使用抛事件的方式传递给 widget,当然不是直接抛给widget,而是有一个专门处理事件的线程,接收各种不同的事件,然后通过信号槽,发送到指定窗口,窗口更新到界面上。

    效果如图1所示

图1  

主要的类说明:

1、工作者线程,监听消息事件

class MessageListening : public QThread

2、帮助工作者线程处理业务的对象,用户监听客户端的连接请求

class Work : public QObject
工作者线程
class WorkThread : public QThread

3、工作者线程,监听消息事件

class MessageListening : public QThread

4、服务器端线程,负责和客户端进行交互

class ClientThread : public log4cplus::thread::AbstractThread

5、小工具主窗口 负责接收并显示日志信息

class debugHelper : public QWidget

6、用户列表,显示当前连接的用户+默认+创建的用户

class CCUserListWidget : public QTreeWidget

7、自定义输出设备

class CCUIAppender : public ConsoleAppender

8、日志过滤数据源 负责提供给视图过滤后的数据,数据源来自QStandardItemModel

class CCSortFilterProxyModel : public QSortFilterProxyModel

9、日志窗口 针对每个用户new一个

class CCLogTableWidget : public QWidget

10、本地日志加载创建 用于比对多个不同来源的日志

class CCLogListWidget : public QWidget

转载于:https://www.cnblogs.com/swarmbees/p/5621619.html

你可能感兴趣的文章
docker镜像的使用方法
查看>>
提升HTTPS安全评级
查看>>
iOS开发过程中的心得
查看>>
QOS配置命令
查看>>
linux安装搭建media-wiki
查看>>
使用 MPI for Python 并行化遗传算法
查看>>
widget
查看>>
paramiko安装及使用
查看>>
Java私塾:研磨设计模式 之 访问者模式(Visitor)
查看>>
我的友情链接
查看>>
《Python网络数据采集》读书笔记(六)
查看>>
Linux必学的60个命令
查看>>
iptables 学习笔记 (上)
查看>>
Windows Server 2012 R2 Active Directory(活动目录)实验一
查看>>
android viewpager 无限左右滑动
查看>>
linux下SSH远程连接服务慢解决方案
查看>>
利用mic visual studio 2010 编译器执行wincap获取网络适配器的代码
查看>>
HTML
查看>>
CENTOS7下编译安装PHP-5.4以及配置phpMyAdmin
查看>>
磁盘显示无法访问拒绝访问,里面的资料怎样找到
查看>>