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!