Direwolf在运行时,屏幕会输出反馈信息,我们根据这些信息可以了解程序的启动和运行状态、接收发射和中继信标的记录、每个信标的内容信号强度等等信息,参考这些信息对Direwolf的统计、分析、排错、优化有很大帮助。
但Direwolf不会保存这些信息,就是说只有在前台运行时才会显示这些信息,而官方文档中(83页、166页)给出方案的输出结果则不那么详细,博主在日常使用中也是非常苦恼,经过一段时间摸索,发现一个比较简单实用的方法来保存输出的信息。
以《APRS折腾之:IGate网关》为例,博文末尾在开机启动文件 nano /etc/rc.local 中写入了Direwolf的启动命令:
rtl_fm -f 144.640M -p 17 - | direwolf -c /root/direwolf.conf -r 24000 -D 1 - & exit 0
这种方式无法保存输出的信息,要想实现记录只需在末尾添加“>>”重定向,指向一个日志文件direwolf.log即可,但这样保存的输出信息没有时间前缀,那么我们加入ts命令实现吧。
首先安装这个ts命令工具:
apt update apt install moreutils
然后将ts和时间格式加入启动命令结尾,而后用“>>”指向一个日志文件:
rtl_fm -f 144.640M -p 17 - | direwolf -c /root/direwolf.conf -r 24000 -D 1 - | ts "%Y-%m-%d %H:%M:%S" >> /root/direwolf.log & exit 0
最后查看一下 /root/direwolf.log 日志文件内容:
非常详细,需要时随即查阅。
那么问题来了,Direwolf每天都会生成大量的日志信息,时间久了文件体积会变大,而且查阅起来也会很麻烦。
我们只需一个小脚本,把昨天的日志备份起来,保留一个月,自动滚动删除:
nano /root/shell/dw_logbak.sh
#!/bin/sh DATE_Y=`date +"%Y-%m-%d" -d "-1 days"` DW_LOG="/root/direwolf.log" BAK_PATH="/root/bak" BAK_LOG="$BAK_PATH/direwolf_$DATE_Y.log" if [ ! -d $BAK_PATH ] then mkdir $BAK_PATH fi cp $DW_LOG $BAK_LOG echo '' > $DW_LOG cd $BAK_PATH find . -ctime +30 | xargs rm -f
加入计划任务,次日0点执行:
crontab -e
00 00 * * * /root/shell/dw_logbak.sh
打完收工!
日志不但可以帮助我们优化Direwolf,还可以为遥测提供数据统计(参考博文《Direwolf的APRS遥测功能》),还有博主以后要折腾的LCD4Linux统计显示屏,也为其提供数据统计。
拜读啦! 学习中
/usr/local/bin/direwolf -c /root/direwolf.conf -r 24000 -D 1 -l /var/www/html/log/
我是用-l 输出了aprs的日志,出来就是csv格式,按日生成,不过没有系统日志详细
direwolf的解码日志(就是那个csv日志)有个bug:如果comments内容包含控制字符,会在csv里直接输出换行,导致csv格式破坏,而csv又没有对field进行加引号处理,我替了issuse了,不过好像还没修复
而且那个时间好像也不对,不能自动适配时区
BI9BCQ 补课来了