Нужен хороший инструмент ведения журнала последовательного порта
Я работаю над встроенной системой и использует один последовательный порт для всех целей ведения журнала.
Есть ли там инструмент, который позволяет фильтровать строки в разные окна (или вообще удалять их), чтобы я мог разделить выходные данные различных подсистем систем протоколирования и удалять спам-сообщения, которые появляются несколько раз в секунду?
Я бы предпочел решение с открытым исходным кодом, но может сделать предложение с высокой рекомендацией.
Ответы
Ответ 1
Я никогда не думал об этом, но вот один продукт, который мог бы сделать трюк: Eltima Serial Port Splitter. Он утверждает, что может принимать один COM-порт и превращать его в несколько виртуальных портов для подключения ко многим приложениям. Возможно, вы сможете принять каждое приложение и просто посмотреть на один вид вывода.
Лично я просто напишу python script с PySerial и что-то вроде PyQT или wxPython (библиотеки GUI) для фильтрации данных в разных окнах. Это простой язык для изучения и делает удобный инструмент для разработки встроенных систем для таких вещей, как это.
Ответ 2
Вы можете использовать сплиттер Eltima с Advanced Serial Data Logger, это программное обеспечение имеет несколько фильтров, которые могут отфильтровывать ненужные сообщения.
Ответ 3
Я бы сделал следующее:
Используйте Python.
Напишите программу Python для чтения последовательных данных с устройства и переведите ее в элемент журнала для модуля протоколирования Python.
- Если в сообщениях вашего устройства есть какой-то исходный идентификатор, переведите это в имя Python "logger" в соответствии с вашими потребностями, используя
getLogger()
. Вы можете определить имена журналов любым способом, который вам нужен, например. для определения источника или категории журнала.
- Если сообщения журнала вашего устройства имеют показатель серьезности, переведите его в параметр
lvl
в метод logger log()
. В противном случае просто используйте один из методов журнала, например info()
.
Используйте функцию файла конфигурации модуля протокола Python для фильтрации данных, как вы хотите, в конкретной ситуации.
- Вы можете фильтровать определенные лог файлы по имени серьезности и журналу.
- Вы можете выполнить вход в несколько пунктов назначения: Вы можете фильтровать и печатать определенные элементы журнала на экране и в то же время фильтровать и печатать определенный журнал элементов к одному или нескольким файлам. Вы можете смешивать их в любой комбинации. Он очень гибкий.
- У вас может быть несколько конфигурационных файлов журналов для нескольких разных целей ведения журнала и просто укажите, какой из них вы хотите использовать через командную строку при каждом запуске вашей программы.
Я использовал модуль регистрации Python с конфигурационными файлами, чтобы настроить фильтрацию, и это действительно потрясающе.
Ответ 4
Я думаю, это будет зависеть от формата ваших журналов. Если они выглядят как (или вы можете сделать их похожими) в формате syslog, вы можете попробовать следующее:
http://sourceforge.net/projects/logwatch/
http://xjack.org/logtool/
Ответ 5
SmarTerm позволяет подключаться ко многим различным последовательным портам в интерфейсе с вкладками. Он также имеет Visual Basic, такой как язык сценариев, который позволяет писать сценарии для разных потребностей. Я написал довольно много сценариев для обновления встроенного программного обеспечения, а также автоматизацию сохранения журналов на нескольких вкладках.
![alt text]()
Ответ 6
Я лично использовал бы описанный выше метод Python, но другим (относительно простым) способом его использования было бы использовать sed
.
Создайте несколько разных фильтров, чтобы точно показать, что вы хотите от потока, а затем выполните команду tail -f
вашего файла последовательного устройства.
Ответ 7
Используйте screen
с grep
и tail
.
Ответ 8
Мой первый выбор - всегда запускать PortMon (первоначально из SysInternals). У него есть опция фильтра, в которой вы можете вводить строки, чтобы включать, исключать или выделять:
![alt text]()
Я использовал это в течение многих лет в Windows NT/2000/XP с большим успехом.
Надеюсь, вы используете 32-битную ОС Windows, потому что, если вы используете 64-разрядную версию, вам придется пойти с чем-то вроде продукта Eltima.
Ответ 9
Всегда есть почтенный анализатор протоколов.
http://shop.ebay.com/?_from=R40&_trksid=p3907.m570.l1313&_nkw=RS-232+protocol+analyzer&_sacat=See-All-Categories
Вы можете получить только один цвет на экране, но это независимое от платформы решение для регистрации последовательного порта.
Ответ 10
Попробуйте Powershell. Вам, очевидно, нужно добавить фильтрацию, но это должно заставить вас начать
$port= new-Object System.IO.Ports.SerialPort COM3,9600,None,8,one
$port.Open()
While ($TRUE) {
$port.ReadLine()
}