Экспорт журнала просмотра в файл - PullRequest
1 голос
/ 04 марта 2020

Мне было интересно, можно ли в любом случае экспортировать ту же информацию, что я получаю в LogViewer в Choregraphe, в файл .txt, используя скрипт Python, загруженный в робота.

Я изучил документацию по Альдебарану, и это единственное, что кажется достаточно близко к тому, что мне нужно: http://doc.aldebaran.com/2-4/dev/libqi/guide/py-log-client.html

Кто-нибудь наткнулся такая же ситуация? Могу ли я использовать что-то похожее на пример, приведенный в ссылке, для сохранения журналов в файл .txt?

Заранее благодарю за помощь!

1 Ответ

2 голосов
/ 05 марта 2020

Доступ к журналам с помощью Python Программы

Используя пример qi.logging из документов , вы можете записывать сообщения журнала в файл, подобный этому.

import qi
import qi.logging

t = open('log.txt','w')

def onMessage(mess):
    t.write(str(mess) + '\n') # mess is a dictionary with all known LogMessage information.

def main():
    app = qi.Application()
    app.start()
    logmanager = app.session.service("LogManager")
    listener = logmanager.getListener()
    listener.onLogMessage.connect(onMessage)
    app.run()

if __name__ == "__main__":
    main()

Обратите внимание, что формат будет отличаться от того, что вы видите в Choregraphe, потому что сообщения журнала хранятся в формате словаря. Вот пример сообщения.

{'category': 'ALMemory', 'level': 5L, 'source': ':notify:0', 'location': '36cd8c70-ff69-4017-ac66-c5c711cde253:3106', 'date': 4088131421410L, 'message': 'notifying module: ALBasicAwareness for datachange for key: ALTracker/FindPersonHead', 'id': 2716827L, 'systemDate': 1583368808079483915L}

Если вам не нужны журналы в режиме реального времени, то ниже может быть более простой подход.

Доступ к журналам вручную

Есть также несколько способов получить журналы вручную, в зависимости от того, для чего вы хотите использовать информацию. Этот метод наиболее полезен для сбора данных журнала для анализа после выполнения теста.

Во-первых, вы можете скопировать системные журналы naoqi непосредственно из того места, где они были записаны в /var/log/naoqi/servicemanager/system.Naoqi.log, например, используя scp. Вы можете найти описания различных журналов здесь .

scp nao@<nao-ip>:/var/log/naoqi/servicemanager/system.Naoqi.log <location-to-store>

Вы также можете запустить инструмент nao-diagnostic на роботе, который соберет все файлы журналов в /home/nao/diagnosis/nao-diagnosis_<date>.tar.xz. Вы можете скопировать этот файл, распаковать его, и вы найдете журнал Naoqi на system-logs/logs/naoqi/servicemanager/system.Naoqi.log

...