restlet2.0学习(extend)-restlet日志信息写入log4j中
使用过restlet的人都知道,restlet使用的是JDK的日志信息,而restlet的日志信息都会以system.Out的形式输出,无法写入到指定文件。虽然不是什么大问题,但是在一些公司里面,这些东西就会成为一个问题,有解决方案的话当然是最好不过了。
现在就开始写上解决方案。我们知道restlet的日志输出时使用logService的,在logFilter中真正的打印那些日志。而在那之前,会去加载一个org.restlet.engine.loggerFacadeClass变量到System的properties中,默认加载JDK的facade。而我们首先就是在容器启动的时候去修改这个变量。由于restlet有一个扩展包ext.slf4j,因此我们可以把facade指向slf4j,通过slf4j去设定我们所需要使用的日志系统。
public static void main(String[] args) throws Exception { System.setProperty("org.restlet.engine.loggerFacadeClass", "org.restlet.ext.slf4j.Slf4jLoggerFacade"); Component component = new Component(); component.getServers().add(Protocol.HTTP, 8182); // Attach the application to the component and start it component.start(); }
大家都知道slf4j不是一个日志系统,而是一个日志facade。通过slf4j可以方便的更换日志系统的使用,具体如何更换大家可以网上查一下slf4j的用法,这些教程已经满天飞了。
给个传送门吧:http://blog.csdn.net/hbcui1984/article/details/5138883
而在使用之前,我们需要加入一些jar包
org.restlet.ext.slf4j.jar
slf4j-api.jar
这两个jar就是连接到slf4j上,而至于具体使用什么日志系统就看各位的喜好了。我列一下我使用的日志系统和jar包,算是做个示例参考一下吧。
我使用的是lo4j做日志系统,所以还需要额外添加如下jar
slf4j-log4j12.jar
log4j.jar
配置文件使用的是:
log4j.properties
加入这些jar和文件之后,原本restlet打印出来的日志信息就可以根据log4j的配置来控制了。