配置jetty log为Apache log4j
来源:互联网 发布:傻黑淘宝内裤 编辑:程序博客网 时间:2024/05/17 10:42
项目最近使用的是jetty服务器,但是使用时发现jetty的日志输出的时间格式和项目定义的格式不太一样.
jetty:yyyy-MM-dd HH:mm:ss.SSS
项目中的配置为:yyyy-MM-dd HH:mm:ss
以前对jetty了解不够,就去一步步的看配置文件,发现jetty的安装目录中有一个文件叫jetty-loggin.xml,但是发现并没有可以指定输出时间格式的位置.然后我找到了jetty默认的日志处理类StdErrLog,发现这样一段代码:
private void format(StringBuilder buffer, String level, String msg, Object... args) { long now = System.currentTimeMillis(); int ms=(int)(now%1000); String d = _dateCache.formatNow(now); tag(buffer,d,ms,level); format(buffer,msg,args); } private void tag(StringBuilder buffer, String d, int ms, String tag) { buffer.setLength(0); buffer.append(d); if (ms > 99) { buffer.append('.'); } else if (ms > 9) { buffer.append(".0"); } else { buffer.append(".00"); } buffer.append(ms).append(tag); String name=_printLongNames?_name:_abbrevname; String tname=Thread.currentThread().getName(); int p=__tagpad>0?(name.length()+tname.length()-__tagpad):0; if (p<0) { buffer .append(name) .append(':') .append(" ",0,-p) .append(tname); } else if (p==0) { buffer.append(name).append(':').append(tname); } buffer.append(':'); if (_source) { Throwable source = new Throwable(); StackTraceElement[] frames = source.getStackTrace(); for (int i = 0; i < frames.length; i++) { final StackTraceElement frame = frames[i]; String clazz = frame.getClassName(); if (clazz.equals(StdErrLog.class.getName()) || clazz.equals(Log.class.getName())) { continue; } if (!_printLongNames && clazz.startsWith("org.eclipse.jetty.")) { buffer.append(condensePackageString(clazz)); } else { buffer.append(clazz); } buffer.append('#').append(frame.getMethodName()); if (frame.getFileName() != null) { buffer.append('(').append(frame.getFileName()).append(':').append(frame.getLineNumber()).append(')'); } buffer.append(':'); break; } } buffer.append(' '); }
可以看出日志的输出格式是固定的,所以默认的日志输出是不能用了,我google了一下,jetty是支持其他的日志框架的:
参考jetty文档:http://www.eclipse.org/jetty/documentation/9.3.x/example-logging-log4j.html
文档中的大概步骤:
1.在jetty的lib目录下新增logging目录,把slf4j-api-1.6.6.jar,log4j-1.2.17.jar,slf4j-log4j12-1.6.6.jar放进去
在jetty的resources目录下新增log4j.properties配置文件,和jetty-logging.properties,其中弄log4j的配置没有什么太大的出入,主要是在jetty-logging.properties中添加:
# Configure Jetty for SLf4j Loggingorg.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.Slf4jLog
最后一步:在start.ini文件中添加一行:
--module=logging
然后重启你的jetty,就可以了.
但是需要注意这里输出的日志只有jetty的日志,不会有项目的日志的.
- 还有一种方式是参考别人的配置方式,自己又修改了一下成功的:
- 如下:
- 1.在jetty的lib/ext目录中添加上述三个jar包
- 2.在resources中添加log4j.properties
- 3.在jetty的etc目录中找到jetty.conf文件,并注释掉jetty-logging.xml这行
# ========================================================# jetty.conf Configuration for jetty.sh script# --------------------------------------------------------# This file is used by the jetty.sh script to provide # extra configuration arguments for the start.jar command# created by that script.# # Each line in this file becomes an arguement to start.jar# in addition to those found in the start.ini file# =======================================================#jetty-logging.xmljetty-started.xml
然后就重启jetty就可以了,当然这种配置同样只会输出jetty的日志.
那么怎么把项目的日志和jetty的日志放在一起呢,(项目中采用的log4j,非log4j未测试)我们想的的办法就是项目中的log4j配置文件和jetty的配置文件指定同一个输出文件,采用追加方式就行了.
(本人新手程序猿,如有错误希望指正,共同学习!)
- 配置jetty log为Apache log4j
- jetty的log配置
- Jetty的log配置
- apache common log & apache log4j
- jetty日志转换为log4j
- Apache Log配置
- Apache Log4j配置说明
- Apache Log4j配置说明
- Apache Log4j配置说明
- Apache Log4j配置说明
- Apache Log4j配置说明
- Apache Log4j配置说明
- Apache Log4j配置说明
- Apache Log4j配置说明
- Apache Log4j配置说明
- Apache Log4j配置说明
- Apache Log4j配置
- Apache Log4j配置说明
- 刚刚开博
- Openjudge NOI题库1.13编程基础之综合应用12:分数求和
- unlocked_ioctl和堵塞(waitqueue)读写函数的实现
- opencv学习(三十)之设计线性滤波器filter2D
- 在本地提交代码到github主分支同时提交到gh-pages分支
- 配置jetty log为Apache log4j
- button的StateListDrawable
- RobotArt中环境校准方法(3)-工件坐标系
- Android中常用的设计模式 --- Builder模式
- MVC(五、HtmlHelper(Html 辅助方法)介绍)
- C# 泛型的协变和逆变
- 最全前端资源---快过来 最新鲜的资源这里都有
- YUV422P、YV16、NV16、NV61格式转换成RGB24
- jsvm9.19.7运行步骤