在logback中有一个名为CyclicBufferAppender
的appender,似乎没有它的示例。它是做什么的?它如何在rollingFileAppender
的上下文中工作?它是与RollingFileAppender
一起工作还是独立工作?它类似于Asyncappender
吗?任何以编程方式编写的示例都是受欢迎的。
让我分享一个例子,说明我如何使用它让我的Spring Boot web应用程序在UI中显示自己的日志消息。
我有一个CyclicBufferAppender
子类,InmemoryAppender
,其唯一目的是让Spring将其作为bean进行管理。(受@neemepraks回答的启发。)
@Component
public class InMemoryAppender extends CyclicBufferAppender<ILoggingEvent> implements SmartLifecycle {
@Override
public boolean isRunning() {
return isStarted();
}
}
我在启动过程中添加该组件(这意味着它将错过Spring Boot启动日志消息,如链接的答案所示,但我对此没有意见):
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(WebApplication.class, args);
LoggerContext loggerContext = (LoggerContext)LoggerFactory.getILoggerFactory();
Logger rootLogger = loggerContext.getLogger(Logger.ROOT_LOGGER_NAME);
rootLogger.addAppender(context.getBean(InMemoryAppender.class));
}
@Controller
@RequestMapping(path = "/logs")
public class LogController {
public LogController(InMemoryAppender appender) {
this.appender = appender;
}
private final InMemoryAppender appender;
@GetMapping
public String index(Model model) throws Exception {
ILoggingEvent[] events = new ILoggingEvent[appender.getLength()];
for (int i = 0; i < appender.getLength(); i++) {
events[i] = appender.get(i);
}
model.addAttribute("logs", events);
return "logs/index";
}
}
<h1>Logs</h1>
<table style="border-collapse: separate; border-spacing: 2px;">
<thead>
<tr>
<th scope="col">Timestamp</th>
<th scope="col">Level</th>
<th scope="col">Message</th>
</tr>
</thead>
<tbody>
<tr th:each="log: ${logs}" th:object="${log}">
<td th:text="*{#dates.format(timeStamp, 'yyyy-MM-dd HH:mm:ss.SSS')}" style="white-space: nowrap;">[timestamp]</td>
<td th:text="*{level}">[level]</td>
<td th:text="*{message}">[message]</td>
</tr>
</tbody>
</table>
不管什么原因,我的回拨电话打不通。基本上,我将使用我创建的tcp服务器进行群组聊天。我试图在java中创建一个线程,然后使用回调将我从套接字获得的信息提供给主活动。 当前收到得错误: 客户端任务 最后,我想通过响应事件传递一个字符串,它将获得它的主要内容。
我使用DexGuard进行模糊处理。我有来自崩溃日志和映射文件的堆栈跟踪。当我运行,为其提供堆栈跟踪和映射文件,输出仍为模糊格式。
本文向大家介绍Ruby编程中关于中断和返回的用法教程,包括了Ruby编程中关于中断和返回的用法教程的使用技巧和注意事项,需要的朋友参考一下 return,break,next 这几个关键字的使用都涉及到跳出作用域的问题,而他们的不同 则在于不同的关键字跳出去的目的作用域的不同,因为有代码块则导致有一些地方需要格外注意。 return 常用方式 通常情况下的return语句和大家理解的意思是相同的
问题内容: 在android中,我正在创建用于url连接的线程。在线程中,我将响应消息存储在全局声明的字符串中。当我访问method方法时,它返回null。 当我调用该方法时,它返回null。 问题答案: 您真的只想使用它,尝试一下
我正在尝试创建一个存储过程,根据学生所上的课程(显然)来创建学生时间表。但是,我认为连接导致存储过程返回双倍的行。 这是输出:输出 对如何解决这个问题有什么建议吗? 这是我的数据库表的快照
问题内容: 我有一个返回JSON的MVC控制器。我想使用jQuery读取/获取JSON并遍历JSON项目/行。 基本上,我正在阅读一堆评论,然后逐一显示评论。 有人有代码示例吗? 我正确地获取了json。请参阅下面的返回数据。 谢谢 编辑: 如何循环这些由控制器返回的json?我需要循环3次,然后对于每一行,我需要访问该行中的所有键和值。 问题答案: 第一个问题的答案是允许Json在GET中工作。