2015-08-05 2 views
0

Я ищу способ прочитать syslog часов в режиме реального времени, аналогично тому, как Device Console или this сделать это для iPhone.Чтение Apple Watch syslog (NSLog()) в режиме реального времени

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

На данный момент я даже соглашусь на решение, которое каким-то образом читает тексты в реальном времени из консоли отладки Xcode, правда (хотя я предпочел бы способ подключиться к syslog часов стандартным образом :) ..

Спасибо!

ответ

1

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

Он использует библиотеку автоматизации GUI python, чтобы вытащить текст из окна консоли Xcode.

Обратите внимание, это решение действительно имеет это ограничения, как:

  • требует телефон должен быть подключен к компьютеру с помощью кабеля
  • содержит только журналы с вашего собственного приложения, таким образом, она не дотягивает инструменты, упомянутые ранее.

Однако, это решило мою проблему, и я публикую короткий код python в надежде, что это поможет другим разработчикам.

import atomac 

def get_console(): 
    xcode = atomac.getAppRefByBundleId('com.apple.dt.Xcode') 
    return xcode.windows()[0].groups()[0].textAreasR()[1] 

def run(): 
    console = get_console() 
    while True: 
     clog = console.AXValue[-1000:] 
     last_read = clog.split("\n")[-2] 
     print last_read 

if __name__ == "__main__": 
    run() 

Примечание Вы, возможно, придется играть с некоторыми из индексов внутри get_console(), чтобы получить окно консоли в вашей установке Xcode.

(Если вам интересно, этот код взлома был написан для проекта hackathon, чтобы получить быстрые данные с часов, так как он не мог отправлять UDP-пакеты на WatchOS2 Beta 4 и официальные способы отправки данные из часов [например, sendMessageData:replyHandler:errorHandler:] были слишком медленными для того, что нам было нужно).