Можно ли прочитать ErrorStream из клипов с помощью clipspy
? С помощью pyclips
он работал следующим образом: clips.ErrorStream.Read()
.
Имеет ли смысл делать это с помощью clipspy
, или все ошибки выбрасываются как исключения и могут быть захвачены с помощью clips.CLIPSError
?
Когда clipspy
обнаруживает ошибку, он вызывает исключение CLIPSError
встраивающее вывод werror
как сообщения. Поэтому вы можете в основном полагаться на это.
Тем не менее, поскольку API CLIPS C не совсем согласован, вы можете найти некоторый угловой случай. Чаще всего исключение CLIPSError
может не содержать сообщения об ошибке, так как CLIPS не всегда печатает сообщение в случае ошибки.
Если вы хотите прочитать вывод CLIPS, вы можете сделать это, используя средства маршрутизации, которые описаны в Advanced Programming Guide
CLIPS. API-интерфейсы clippy router очень близки к 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!