clipspy подвеска для клипов clips.ErrorStream.Read()

Можно ли прочитать ErrorStream из клипов, используя clipspy? С pyclips, это сработало так: clips.ErrorStream.Read(),

Есть ли смысл делать это с clipspyили все ошибки выбрасываются как исключения и могут быть обнаружены clips.CLIPSError?

1 ответ

Решение

Когда clipspy обнаруживает ошибку, она вызывает CLIPSError исключение, встраивающее вывод werror как сообщение Поэтому вы можете в основном полагаться на это.

Тем не менее, поскольку API-интерфейсы CLIPS C не полностью согласованы, вы можете найти какой-то угловой случай. Чаще всего CLIPSError исключение может не содержать сообщения об ошибке, так как CLIPS не всегда печатает сообщение в случае ошибки.

Если вы хотите прочитать вывод CLIPS, вы можете сделать это, используя средства маршрутизации, которые описаны в CLIPS. Advanced Programming Guide, API-интерфейсы clipspy- роутера очень близки к C- интерфейсам.

Вы также можете использовать LoggingRouter управлять выводом CLIPS с помощью регистрации в Python. Это удобно, когда вы хотите интегрировать CLIPS в службу Python.

import clips
import logging

logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(levelname)s - %(message)s')

env = clips.Environment()
router = clips.LoggingRouter()

router.add_to_environment(env)

env.eval('(printout t "Hello World!" crlf)')

Выход

2018-10-16 17:29:01,829 - INFO - Hello World!
Другие вопросы по тегам