我正在使用嵌入式系统,它使用一个串口进行所有日志记录。
是否有工具允许您将行过滤到不同的窗口(或完全删除它们),以便我可以分离各种日志记录子系统的输出并删除每秒多次显示的垃圾邮件?
我更喜欢开源解决方案,但强烈推荐的封闭式产品可能会这样做。
答案 0 :(得分:11)
我从来没有想过要做这样的事情,但这里有一个产品可以解决这个问题:Eltima Serial Port Splitter。它声称能够使用一个COM端口并将其转换为多个虚拟端口以连接到许多应用程序。您可以使用每个应用程序,只看一种输出。
就个人而言,我只会用python写一个PySerial脚本,例如PyQT或wxPython(GUI库),以便将数据过滤到不同的窗口。它是一种易于学习的语言,并为此类事物的嵌入式系统开发提供了便利的工具。
答案 1 :(得分:4)
我会做以下事情:
使用Python。
编写一个Python程序来读取设备中的串行数据,并将其转换为Python日志记录模块的日志项。
getLogger()
名称。您可以以任何方式定义记录器名称,例如定义日志源或类别。log()
方法的lvl
参数。否则,只需使用其中一种记录器方法,例如info()
。利用Python logging module's config file feature在特定情况下根据需要过滤数据。
我已经使用Python的日志记录模块和配置文件来设置我的过滤,这真的太棒了。
答案 2 :(得分:4)
你可以将Eltima的分割器与Advanced Serial Data Logger一起使用,该软件有几个过滤器插件,可以过滤掉不必要的消息。
答案 3 :(得分:1)
我想这取决于你的日志格式。如果它们看起来像(或者你可以看起来像)syslog格式,你可以尝试以下方法:
http://sourceforge.net/projects/logwatch/ http://xjack.org/logtool/
答案 4 :(得分:1)
SmarTerm允许您在选项卡式界面中连接到许多不同的串行端口。它还具有类似Visual Basic的脚本语言,允许您编写满足不同需求的脚本。我写了很多脚本来更新嵌入式软件,并自动保存多个标签中的日志。
答案 5 :(得分:1)
我个人会使用上面描述的Python方法,但另一种(相对简单的)方法是使用sed
。
构建几个不同的过滤器,以便从流中准确显示您想要的内容,然后在您的串行设备文件的tail -f
中进行管道传输。
答案 6 :(得分:1)
尝试Powershell。你显然需要添加过滤,但这应该让你开始
$port= new-Object System.IO.Ports.SerialPort COM3,9600,None,8,one
$port.Open()
While ($TRUE) {
$port.ReadLine()
}
答案 7 :(得分:0)
将screen
与grep
和tail
一起使用。
答案 8 :(得分:0)
我的第一选择是始终运行PortMon(最初来自SysInternals)。它有一个过滤器选项,您可以在其中键入要包括,排除或突出显示的字符串:
我已经在Windows NT / 2000 / XP上使用了多年,取得了巨大的成功。
希望您运行的是32位Windows操作系统,因为如果您运行64位,则必须使用Eltima的产品。
答案 9 :(得分:0)
总是有令人尊敬的协议分析器。
您可能只在屏幕上获得一种颜色,但它是一种独立于平台的串行端口日志记录解决方案。