对于运行在Netty上的Spring WebFlux,我希望有像Tomcat那样的访问日志,但我在Spring文档中没有找到任何东西。
有人能帮忙吗?
这已在本问题之后的Netty V0.7.9版本中实现。根据此处发布的说明,您可以启用日志,如下所示:
-dreactor.netty.http.server.accesslogenabled=true
系统属性而且
在实现该功能之前可用的其他解决方案有:
正如@GreyTearDrop在注释中提到的,您可以将reactor.ipc.netty.channel.contextHandler
和reactor.ipc.netty.http.server.httpserver
的日志级别设置为debug
。这将产生每个消息的多行转储,作为十六进制+ASCII表。不是很适合生产使用,但对调试很有用。
如果您的项目中有Spring执行器,is支持跟踪HTTP请求。跟踪信息被发送到HttpTraceRepository
bean。默认情况下,InMemoryHttpTraceRepository
保存最后100个跟踪。
您可以通过实现自己的HttpTraceRepository
或添加跟踪日志的修饰器来利用这一点。您需要将其注册为bean--它将替换自动配置的inMemoryHttpTraceRepository
。
请注意,HTTP跟踪只有关于请求和响应的有限信息集,例如。您没有访问请求/响应正文或大小的权限。
我最终实现的一个解决方案如下所示:
@Bean
public HttpTraceRepository httpTraceRepository() {
return new AccessLoggingHttpTraceRepositoryDecorator(
new InMemoryHttpTraceRepository(),
LoggerFactory.getLogger("netty.Access"),
new HttpTraceLogFormatter()
);
}
public class AccessLoggingHttpTraceRepositoryDecorator implements HttpTraceRepository {
private HttpTraceRepository delegate;
private Logger logger;
private HttpTraceLogFormatter formatter;
public AccessLoggingHttpTraceRepositoryDecorator(HttpTraceRepository delegate, Logger logger, HttpTraceLogFormatter formatter) {
this.delegate = delegate;
this.logger = logger;
this.formatter = formatter;
}
@Override
public List<HttpTrace> findAll() {
return delegate.findAll();
}
@Override
public void add(HttpTrace trace) {
if (logger.isDebugEnabled()) {
try {
logger.debug(formatter.format(trace));
} catch (Exception e) {
logger.error("Failed to log trace " + trace, e);
}
}
delegate.add(trace);
}
}
public class HttpTraceLogFormatter {
public String format(HttpTrace trace) {
// TODO implement this according to your preference
return ...;
}
}
management:
trace:
http:
include: REQUEST_HEADERS, RESPONSE_HEADERS, PRINCIPAL, REMOTE_ADDRESS, TIME_TAKEN
默认情况下,只包含request_headers、RESPONSE_HEADERS、COOKIE_HEADERS、time_take
。
Spring Boot执行器在HttpTraceWebFilter
的帮助下实现跟踪。如果您不想使用执行器的解决方案,可以从HttpTraceWebFilter
的源代码中获得灵感,并实现自己的WebFilter
。将其公开为Spring bean,它将自动注册到Netty。
本文向大家介绍请问如何打印日志?相关面试题,主要包含被问及请问如何打印日志?时的应答技巧和注意事项,需要的朋友参考一下 考察点:异常 cat /var/log/*.log 如果日志在更新,如何实时查看tail -f /var/log/messages 还可以使用watch -d -n 1 cat /var/log/messages -d表示高亮不同的地方,-n表示多少秒刷新一次。
问题内容: 在ubuntu服务器上使用ruby进行Redis设置,但是无法弄清楚如何访问其日志文件。教程说应该在这里: 但甚至找不到/ var /文件夹 问题答案: 通过以下方式发现它: 因此,如果设置是更标准的,则应为: 这将输出文件的最后100行。 日志文件所在的位置是您可以通过以下方式访问的配置: 使用上述内容可能并不总是显示日志文件。在那种情况下使用
我已经在Centos远程服务器上安装并设置了Rabbitmq。后来,我创建了一个文件“rabbitmq.config”,并添加了以下代码行 [{rabbit,[{loopback_users,[]}]}]
问题内容: 我用http 9200打开了几个客户端节点,以切断ElasticSearch查询/索引。我想通过http 9200从客户端记录访问日志,就像Http- Apache拥有access.log一样。我应该如何在ES中启用它。 问题答案: Elasticsearch本身没有这样的东西。 但是,如果安装Shield插件,则可以通过将其添加到配置文件中来启用审核。 然后,您将在ES日志文件夹中获
你好,我正在制作一个简单的桌面应用程序,我正在设计用户界面。我正在使用NetBeans快速设计它。我确实看了很多网站和博客来寻找答案,但是找不到正确的答案。我是UI设计新手。您的答复/建议将不胜感激。 问题是: 我在应用程序中有一个JFrame。这个Jframe有几个JPanel,当用户登录应用程序时,这些JPanel被设置为可见/不可见状态。其中两个面板默认设置为不可见状态(我使用了将它们设置为
概况 背景 这个项目的背景是起源于,我有一个2G左右的网站访问日志。我想看看访问网站的人都来自哪里,于是我想开始想办法来分析这日志。当时正值大数据火热的时候,便想拿着Hadoop来做这样一件事。 ShowCase 最后的效果如下图如示: Demo 这是一个Web生成的界面,通过Elastic.js向搜索引擎查询数据,将再这些数据渲染到地图上。 Hadoop + Pig + Jython + AmM