【问题标题】:Create Web Service Appender for Logback为 Logback 创建 Web Service Appender
【发布时间】:2016-12-22 04:27:41
【问题描述】:
我有一个 REST API,我想使用我的 Logback Appender 与之通信。 REST API 本身受 OAuth 保护,因此任何请求都需要附加 OAuth 令牌。是否可以编写一个可以做到这一点的自定义附加程序。我对 Logback 非常陌生,不知道如何编写自定义附加程序。
例如获取token的URL为http://example.com/obtain-token,推送日志的API为http://example.com/addLogs
如果有人能给我一个关于如何处理这个问题的虚拟代码,我将不胜感激
【问题讨论】:
标签:
java
spring
rest
logback
appender
【解决方案1】:
Logback 有 server appender 的实现,你可以这样做:
LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
SocketAppender appender = new SocketAppender();
appender.setName("MyServer");
appender.setContext(context);
appender.setRemoteHost("some host");
appender.setPort(82323);
appender.start();
// Wrap the appender in an Async appender for performance
AsyncAppender asyncAppender = new AsyncAppender();
asyncAppender.setContext(context);
asyncAppender.setName("ASYNC_SERVER");
asyncAppender.setQueueSize(500);
asyncAppender.addAppender(appender);
asyncAppender.start();
context.getLogger("ROOT").addAppender(asyncAppender);
请注意,Logger 和其他一些类位于 ch.qos.logback.classic 包中。你可以查看document关于appender的详细信息。