log4j做为jetty的日志实现
目标: log4j做为jetty的日志实现
jetty日志原理:
jetty自己实现了一个日志工厂类org.eclipse.jetty.util.log.Log
该类被classloader加载的时会在classpath中查找有没有可用的日志接口(默认是slf4j,可以通过配置启动参数-Dorg.eclipse.jetty.util.log.class=xxxx来指定日志接口),如果找不到就用默认的标准输出日志实现(org.eclipse.jetty.util.log.StdErrLog)。
实现方法:
jetty/lib/ext下放入3个jar包slf4j-api-1.4.3.jar,slf4j-log4j12-1.4.3.jar,log4j-1.2.12.jar
slf4j-api-1.4.3.jar slf4j的接口定义包
slf4j-log4j12-1.4.3.jar slf4j到log4j的转接包
log4j-1.2.12.jar 具体的日志实现包
jetty/resources 文件夹下已经提供一个默认的log4j.properties
启动的OPTIONS添加“ext,resources” ,这样就把jetty/lib/ext和jetty/resources路径添加到启动classpath中
当然你的jar和log配置文件可以放在容器目录外的任意地方,只需要在启动参数添加相应的配置项来指定目录地址。
比如jar文件在 /home/admin/logext, 日志配置文件在/home/admin/logconf
启动命令可以类似
java -jar start.jar lib=/home/admin/logext path=/home/admin/logconf
这样可以避免对容器目录文件的变更。
测试通过的jetty版本为7.2.0