Использование 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 выполнение иногда может быть полезно для отладки.

Другие вопросы по тегам