0

我正在实现一个非常轻量级(嵌入式)的 OSGi 框架,它在目标硬件上运行。要附加控制台,我使用的是 org.apache.felix.gogo.shell 和 org.apache.felix.shell.remote。

迄今为止,我已经使用 System.out.println 记录了所有自定义消息,它运行良好,但现在我正在使用远程控制台,我需要一些允许我将消息“打印”到 OSGi 控制台(和希望出现在目标的控制台以及由 felix.shell.remote 提供的 telnet 控制台上)。

我猜必须有一种方法可以获取 OutputStream (或类似的)的句柄来执行此操作;我的问题是如何?似乎大多数人重定向他们的标准输出等来解决这样的问题。

我正在使用声明式服务,所以我希望能够设置一个附加引用服务的组件(不重要,但会使它变得漂亮和整洁)。

任何帮助是极大的赞赏。

4

1 回答 1

1

最好的方法是使用 OSGi 日志服务对自定义消息进行日志记录。这样,您就可以从您的 shell 或 web 控制台中的 LogReader 服务获取最近的日志。如果您坚持使用流行的框架,如 log4j 等,那么您可以使用 Pax 日志记录。

或者,将输出重定向到已知位置的文件也可以。然后,您可以在 gogo 中创建一个命令来查看该文件或提供一个连续显示文件新部分的 tail 函数。

于 2013-08-05T06:51:24.527 回答