springboot输出流到页面_SpringBoot系列——Logback日志,输出到文件以及实时输出到web页面...

本文介绍了如何在SpringBoot中配置Logback日志输出到文件以及实时显示到Web页面。默认情况下,SpringBoot使用Logback记录日志,并提供控制台输出。日志级别包括ERROR、WARN、INFO、DEBUG和TRACE。通过配置logback-spring.xml,可以实现日志文件的路径、名称和级别设置。此外,文章还展示了如何利用WebSocket实现实时日志查看功能,以及处理日志的着色和自动滚动。
摘要由CSDN通过智能技术生成

前言

SpringBoot对所有内部日志使用通用日志记录,但保留底层日志实现。为Java Util Logging、Log4J2和Logback提供了默认配置。在不同的情况下,日志记录器都预先配置为使用控制台输出,同时还提供可选的文件输出。默认情况下,SpringBoot使用Logback进行日志记录。

日志级别有(从高到低):FATAL(致命),ERROR(错误),WARN(警告),INFO(信息),DEBUG(调试),TRACE(跟踪)或者 OFF(关闭),默认的日志配置在消息写入时将消息回显到控制台。默认情况下,将记录错误级别、警告级别和信息级别的消息。

PS:Logback does not have a FATAL level. It is mapped to ERROR  Logback没有FATAL致命级别。它被映射到ERROR错误级别

本文主要记录Logback日志输出到文件以及实时输出到web页面

输出到文件

我们创建SpringBoot项目时,spring-boot-starter已经包含了spring-boot-starter-logging,不需要再进行引入依赖

标准日志格式

2014-03-05 10:57:51.112 INFO 45469 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/7.0.52

2014-03-05 10:57:51.253 INFO 45469 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext

2014-03-05 10:57:51.253 INFO 45469 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1358 ms

2014-03-05 10:57:51.698 INFO 45469 --- [ost-startStop-1] o.s.b.c.e.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/]

2014-03-05 10:57:51.702 INFO 45469 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]

Date and Time: Millisecond precision and easily sortable. 日期和时间:毫秒精度,易于排序。

Log Level: ERROR, WARN, INFO, DEBUG, or TRACE. 日志级别:错误、警告、信息、调试或跟踪。

Process ID. 进程ID。

A --- separator to distinguish the start of actual log messages. 分隔符,用于区分实际日志消息的开始。

Thread name: Enclosed in square brackets (may be truncated for console output). 线程名称:括在方括号中(可能会被截断以用于控制台输出)。

Logger name: This is usually the source class name (often abbreviated). 日志程序名称:这通常是源类名称(通常缩写)。

The log message. 日志消息。

如何打印日志?

方法1

/**

* 配置内部类

*/

@Controller

@Configuration

class Config {

/**

* 获取日志对象,构造函数传入当前类,查找日志方便定位

*/

private final Logger log = LoggerFactory.getLogger(this.getClass());

@Value("${user.home}")

private String userName;

/**

* 端口

*/

@Value("${server.port}")

private String port;

/**

* 启动成功

*/

@Bean

public ApplicationRunner applicationRunner() {

return applicationArguments -> {

try {

InetAddress ia = InetAddress.getLocalHost();

//获取本机内网IP

log.info("启动成功:" + "http://" + ia.getHostAddress() + ":" + port + "/");

log.info("${user.home} :" + userName);

} catch (UnknownHostException ex) {

ex.printStackTrace();

}

};

}

}

方法2  使用lombok的@Slf4j,帮我们创建Logger对象,效果与方法1一样

/**

* 配置内部类

*/

@Slf4j

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过在logback.xml文件中添加一个Appender,将日志输出到JTextArea。以下是一个示例logback.xml配置: ```xml <?xml version="1.0" encoding="UTF-8"?> <configuration> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <appender name="jtextArea" class="com.example.logback.JTextAreaAppender"> <layout class="ch.qos.logback.classic.PatternLayout"> <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern> </layout> </appender> <root level="info"> <appender-ref ref="console" /> <appender-ref ref="jtextArea" /> </root> </configuration> ``` 其中,`class`为`com.example.logback.JTextAreaAppender`的`jtextArea`是自定义的Appender,用于将日志输出到JTextArea中。可以通过以下代码实现: ```java public class JTextAreaAppender extends AppenderBase<ILoggingEvent> { private static final Map<String, JTextArea> jTextAreaMap = new ConcurrentHashMap<>(); private String loggerName; public void setLoggerName(String loggerName) { this.loggerName = loggerName; } public static void addJTextArea(String name, JTextArea jTextArea) { jTextAreaMap.put(name, jTextArea); } public static void removeJTextArea(String name) { jTextAreaMap.remove(name); } @Override protected void append(ILoggingEvent event) { if (event.getLoggerName().equals(loggerName)) { for (JTextArea jTextArea : jTextAreaMap.values()) { SwingUtilities.invokeLater(() -> jTextArea.append(event.getFormattedMessage() + "\n")); } } } } ``` 在Swing应用程序中,可以在JTextArea上调用`setDocument()`方法,将其传递给`JTextAreaAppender`,并将Appender添加到logback.xml配置文件中: ```java public class MyApp extends JFrame { public MyApp() { JTextArea jTextArea = new JTextArea(); JScrollPane scrollPane = new JScrollPane(jTextArea); JTextAreaAppender.addJTextArea("myapp", jTextArea); Logger logger = (Logger) LoggerFactory.getLogger("myapp"); logger.addAppender(JTextAreaAppender.getInstance("myapp")); // ... } // ... } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值