Использование busctl для создания записи в журнале
Работаю над openbmc и пытаюсь создать запись в журнале через busctl. Я вижу, что для вызова Create требуется ssa{ss}:
# busctl introspect xyz.openbmc_project.Logging
/xyz/openbmc_project/logging xyz.openbmc_project.Logging.Create
interface - - - .Create
method ssa{ss} - -
Но моя попытка позвонить не удалась:
# busctl call xyz.openbmc_project.Logging /xyz/openbmc_project/logging xyz.openbmc_project.Logging.Create Create ssa{ss} 1 "This is a Test" "xyz.openbmc_project.Logging.Entry.Level.Error" "ARG1" "ARG2"
Failed to parse 'xyz.openbmc_project.Logging.Entry.Level.Error' number of array entries: Invalid argument
предположение, что проблема связана с форматированием аргументов. Есть идеи?
1 ответ
У меня нет openbmc, поэтому я не могу это проверить, но есть несколько вещей, которые могут быть неправильными в вашем утверждении.
Число после
ssa{ss}
относится к длине массива, поэтому я думаю, что это неправильное место. Я ожидал, что это будет после двух строк ("This is a Test"
и
"xyz.openbmc_project.Logging.Entry.Level.Error"
в вашем примере)
например
busctl call xyz.openbmc_project.Logging /xyz/openbmc_project/logging xyz.openbmc_project.Logging.Create Create ssa{ss} "This is a Test" "xyz.openbmc_project.Logging.Entry.Level.Error" 1 "ARG1" "ARG2"
Я нашел то, что, по моему мнению, является документацией на https://github.com/openbmc/phosphor-dbus-interfaces/blob/master/xyz/openbmc_project/Logging/Create.interface.yaml#L7
Ваш пример мог бы быть более ясным, если бы
"ARG1"
и
"ARG2"
мы
"KEY1"
и
"VALUE1"
. Думаю, если бы у вас было две пары ключ / значение, было бы верно следующее:
busctl call xyz.openbmc_project.Logging /xyz/openbmc_project/logging xyz.openbmc_project.Logging.Create Create ssa{ss} "This is a Test" "xyz.openbmc_project.Logging.Entry.Level.Error" 2 "KEY1" "VALUE1" "KEY2" "VALUE2"
Мне всегда нужно немного проб и ошибок, чтобы исправить это при использовании busctl. В другом терминале, имеющем
dbus-monitor
выполнение иногда может быть полезно для отладки.