物联网消息队列Emqx日志配置及日志追踪以及Centos7上的rc.local开机不执行、git提交的小问题

一、物联网消息队列Emqx日志配置及日志追踪

        EMQX支持将日志输出到控制台或者日志文件,或者同时使用两者。使用 Docker 部署 EMQX,默认只能通过 docker logs 命令查看 EMQX 日志。EMQX 的默认日志级别为 warning,默认在单日志文件超过10MB(log.rotation.size配置)的情况下,滚动日志文件。emqx.log.N 文件里面,包含了 warning 以及 warning 以上的日志消息。可在 emqx.conf 中修改,emqx.conf相关日志配置如下:

log.to = file
log.level = warning
log.dir = /var/log/emqx
log.file = emqx.log
log.rotation.size = 10MB
log.rotation.count = 5

        可以使用EMQX命令行工具emqx_ctl在运行时修改emqx的日志级别,示例如下:

#将全局日志级别primary log level 以及所有 log handlers 的级别设置为debug:
emqx_ctl log set-level debug
#将主日志primary log level 设置为 debug:
$ emqx_ctl log primary-level debug
#修改某个 log handler的日志级别,如将log handler file设置为 debug:
emqx_ctl log handlers set-level file debug
#启动和停止某个已经的 log handler:
$ emqx_ctl log handlers start default
$ emqx_ctl log handlers stop default

        log handler 是负责日志处理和输出的工作进程,它由 log handler id 唯一标识,并负责接收什么级别的日志、如何过滤日志消息、将日志输出到什么地方三项任务。可以使用命令emqx_ctl log handlers list 查看当前的EMQX服务有哪些日志处理进程。emqx 4.3中安装的 log handlers如下:

$ emqx_ctl log handlers list
LogHandler(id=ssl_handler, level=debug, destination=console, status=started)
LogHandler(id=file, level=warning, destination=/var/log/emqx/emqx.log, status=started)

        关于EMQX日志追踪,EMQX支持针对ClientID或Topic过滤日志并输出到文件。即我们可以将某个用户或某个主题的日志分离出来统计到指定日志文件中,在使用日志追踪功能之前,必须将 primary log level设置为debug,然后可以开始指定日志追踪规则。日志追踪的原理是给 emqx 安装一个新的 log handler,并设置 handler 的过滤条件。在 日志级别和 log handlers 小节,我们讨论过 log handler 的细节。示例如下:

#开启ClientID日志追踪,将所有ClientID为 'my_client' 的日志都输出到log/my_client.log:
$ emqx_ctl log primary-level debug
debug
$ emqx_ctl trace start client my_client log/my_client.log
trace clientid my_client successfully
#开启Topic日志追踪,将主题能匹配到 't/#' 的消息发布日志输出到 log/topic_t.log:
$ emqx_ctl log primary-level debug
debug
$ emqx_ctl trace start topic 't/#' log/topic_t.log
trace topic t/# successfully
#查询已经开启的日志追踪:
$ emqx_ctl trace list

        查询已经开启的日志追踪,可以看到多了两条追踪的逻辑,并且在日志文件中也能看到增加了my_client.log,tail查看其中的内容可以一目了然地看到用户发送接收的指令数据。

        最后:EMQX除了可以通过管理后台修改密码之外,还可通过在服务器上执行命令修改密码。使用命令: emqx_ctl admins passwd admin

二、Centos7上的rc.local开机不执行及git提交时的报错:warning: LF will be replaced by CRLF in..问题

        在Centos7上的开机启动文件/etc/rc.local里添加了一些启动命令,但几次服务器重启后发现服务并没有启动起来。今天排查看了一下,在/etc/rc.local文件中有明确写到需要对此文件有执行权限。

# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
lrwxrwxrwx 1 root root 13 Jan 12  2022 /etc/rc.local -> rc.d/rc.local

        而直接查看的话,这个文件路径也确实加了可执行权限,但这个文件是个软链接,其执行的文件进一步查看没有添加执行权限,这就是问题所在。加上执行权限就可以了。

        另在git提交时遇到报错:warning: LF will be replaced by CRLF in,原因是存在符号转义问题,windows中的换行符为 CRLF, 而在linux下的换行符为LF,所以在执行add . 时出现提示,解决办法:

git config --global core.autocrlf false

### 集成 EMQX MQTT Broker 到 Electron 应用 #### 创建 MQTT 客户端实例 为了使 Electron 应用能够与 EMQX MQTT Broker 通信,需引入一个合适的 MQTT JavaScript SDK。通常推荐使用 `mqtt.js` 或者 `paho-mqtt`。 ```javascript const mqtt = require('mqtt'); // 建立到 EMQX 的连接 let client = mqtt.connect('ws://broker.emqx.io:8083/mqtt'); ``` 此代码片段展示了如何通过 WebSocket 使用默认公共地址连接到 EMQX Broker[^1]。 #### 处理连接事件 当创建好客户端之后,应该监听各种重要的生命周期事件来处理连接状态的变化: ```javascript client.on('connect', function () { console.log("Connected to broker"); }); client.on('message', function (topic, message) { console.log(`Received Message: ${message.toString()} on topic ${topic}`); }); ``` 上述脚本实现了基本的消息接收逻辑,并会在成功建立连接时打印日志信息[^2]。 #### 发布和订阅话题 一旦应用程序已经稳定地连上了Broker,则可以执行发布(Publish)/订阅(Subscribe)操作: ```javascript // 订阅某个特定的主题 client.subscribe('/test/topic'); // 向指定主题发送消息 client.publish('/test/topic', 'Hello from Electron!'); ``` 这段简单的例子说明了怎样去订阅一个给定的话题以及向其广播一条新消息[^3]。 #### 断开连接 最后,在再需要保持会话的时候记得关闭连接以释放资源: ```javascript client.end(); console.log("Disconnected from broker."); ``` 这一步骤对于维护良好的网络行为非常重要,尤其是在移动设备上运行的应用程序中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林戈的IT生涯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值