Как добиться функциональности tail -F с помощью Scala в Liftweb
Я хотел бы наблюдать файл журнала, который постоянно обновляется системой. Я думал об использовании кометного актера, но мне нужен совет в правильном направлении. Я хочу добиться аналогичной функциональности для tail -F для WebApp. Если что-то новое записывается в файл журнала, актер Comet должен постоянно его подбирать. Я хочу показать эту информацию на веб-странице. Как я могу добиться этого с помощью Lift Framework и Scala?
1 ответ
Вам нужно решить 2 проблемы по отдельности: ведение журнала и обновление страницы кометы, а затем собрать все вместе:
Я бы так и сделал, создав актера Akka/Scala/Lift, который ведет журнал. Посмотрите на этот вопрос, например, о том, как подключить файл журнала в Java. Затем, когда этот субъект обнаруживает некоторые изменения в журнале, он должен отправить сообщение актеру кометы, который, в свою очередь, обновит веб-страницу. Вы можете легко найти общие примеры использования Comet, например, здесь.
Если вы не хотите использовать актера, просто запланируйте поток, который запускается и ведет журнал.
Обратите внимание, что если ваш журнал вращается и / или архивируется, вам придется иметь с ним дело.
Совершенно альтернативным решением было бы подключить настраиваемый обработчик журнала или настраиваемый регистратор, например, это и заставить его отправлять вам события журнала. Я думаю, что если вы используете Akka Logger, вы можете просто подписаться на событие, которое ваш актер будет получать при каждом событии журнала, которое вы просто перенаправляете в актера Comet аналогично решению, приведенному выше.