首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
undertow
chcode
2019-07-03 15:34
undertow 如何像tomcat一样开启localhost_access_log
项目:
JFinal Undertow
4
评论区
JFinal
2019-07-03 15:59
下载 jfinal demo for maven, 里头有一个 jfinal.sh 文件,里头有一个被注掉的启动命令行,可以将输出到控制台的信息定向输出到指定的文件,可能就是你想要的功能
如果你是希望将所有请求 URL 都输出到日志,做一个 Handler ,将 String target 参数的内容送入日志文件即可
回复
chcode
2019-07-03 16:04
@JFinal
undertow 没有类似的功能吗?需要自己写?
回复
JFinal
2019-07-03 16:45
@chcode
可能有,翻一翻 undertow 的官方文档,然后用一下 jfinal undertow 项目中的 UndertowServer 中提供一些方法配置一下 undertow
具体的配置方法见文档:
https://www.jfinal.com/doc/1-4
注意看第 11、12 小节的配置样例代码
回复
chcode
2019-07-03 20:51
@JFinal
谢谢波总 ,解决了,参考springboot里面对undertow access log 的实现完成,不过单独靠
UndertowServer.create(JFinalConfig.class)
.onStart( builder -> {
builder.setServerOption(UndertowOptions.参数名, 参数值);
})
.start();
这样好像无法解决,
AccessLogHandler日志处理类 的构造方法为
public AccessLogHandler(HttpHandler next, AccessLogReceiver accessLogReceiver, String formatString, ClassLoader classLoader) {
this(next, accessLogReceiver, formatString, classLoader, Predicates.truePredicate());
}
lambda表达式 内无法获取HttpHandler 对象所以无法构造日志对象,最后还是覆盖了写一个类继承UndertowServer覆盖了configHttp()方法完成了,代码如下
Xnio xnio = Xnio.getInstance(Undertow.class.getClassLoader());
XnioWorker worker = null;
try {
worker = xnio.createWorker(OptionMap.builder().set(Options.THREAD_DAEMON, true).getMap());
} catch (IOException e) {
e.printStackTrace();
}
DefaultAccessLogReceiver accessLogReceiver = new DefaultAccessLogReceiver(worker,
new File(System.getProperty("logPath")), "undertow_access_log.", "log", true);
builder.addHttpListener(config.getPort(), config.getHost())
.setHandler(pathHandler).setHandler(new AccessLogHandler(httpHandler, accessLogReceiver,
"common", Undertow.class.getClassLoader()));
不知道波总有没有更好的建议,希望在下一个版本添加对访问日志配置的支持,因为这个功能还是挺实用的
回复
alian
2020-07-28 09:36
@chcode
我也有这样的需求,不知道现在有没有这个功能?
回复
zlsj80
2023-02-15 09:43
@chcode
等保原因,我现在也有这样的需求,搜到您这个解决方案,看的不是很明白,这个AccessLogHandler日志处理类是io.undertow.server.handlers.accesslog里是已经有了,pathHandler,httpHandler类具体实现能贴出来吗
回复
chcode
2023-02-15 09:51
@zlsj80
主要抄springboot相关的实现
回复
发送
我要反馈
热门反馈
扫码入社
如果你是希望将所有请求 URL 都输出到日志,做一个 Handler ,将 String target 参数的内容送入日志文件即可