我正在实现一个非常轻量级(嵌入式)的OSGi框架,该框架在目标硬件上运行。要附加我正在使用的控制台org.apache.felix.gogo.shell和org.apache.felix.shell.remote。
到目前为止,我已经使用System.out.println记录了所有自定义消息,但是现在我正在使用远程控制台,我需要能够将我的消息“打印”到OSGi控制台(希望同时出现在目标控制台以及felix.shell.remote提供的telnet控制台上)。
我猜测必须有一种方法来获取OutputStream(或类似)的句柄来执行此操作;我的问题是怎么样?似乎大多数人重定向他们的stdout等来解决这样的问题。
我正在使用声明性服务,所以我希望能够设置一个附加引用服务的组件(不重要,但会使它变得漂亮和整洁)。
非常感谢任何帮助。
答案 0 :(得分:1)
最好的方法是使用OSGi Log Service对自定义消息进行日志记录。这样,您就可以从shell或webconsole中获取LogReader服务的最新日志。如果你坚持使用像log4j这样的流行框架,那么你可以通过Pax登录获得一个桥梁。
或者,将输出重定向到已知位置的文件也可以。然后,您可以在gogo中创建一个查看该文件的命令,或者提供一个连续显示文件新部分的尾部函数。