嵌入式 Undertow 日志输出

Posted

技术标签:

【中文标题】嵌入式 Undertow 日志输出【英文标题】:Embedded Undertow log output 【发布时间】:2021-11-29 00:55:33 【问题描述】:

我想配置我的嵌入式 Undertow 以将服务器日志保存到文件中

public class Server 
     UndertowJaxrsServer server = new UndertowJaxrsServer();

     ResteasyDeployment deployment = new ResteasyDeploymentImpl();
     deployment.setApplicationClass(ExampleApplication.class.getName());
     deployment.setInjectorFactoryClass("org.jboss.resteasy.cdi.CdiInjectorFactory");
     DeploymentInfo deploymentInfo = server.undertowDeployment(deployment, "/");
     deploymentInfo.setClassLoader(Server.class.getClassLoader());
     deploymentInfo.setDeploymentName("service");
     deploymentInfo.setContextPath("/service");
     deploymentInfo.addListener(Servlets.listener(Listener.class));
     server.deploy(deploymentInfo);

     Builder builder = Undertow.builder()
            .addHttpListener("8080", "localhost")    


服务器日志显示在控制台中,但我想将所有服务器日志保存到一个文件中(类似于 JBoss 服务器日志,它们每天都保存到日​​志文件中)。我该如何配置?

【问题讨论】:

你用的是什么日志管理器? 我正在使用 Log4j, 您需要修改您的log4j.propertieslog4j.xml,然后添加一个文件追加器。 @JamesR.Perkins 非常感谢,詹姆斯。你能发布一个答案让我接受吗? 【参考方案1】:

鉴于您使用 log4j 作为日志管理器,您需要修改配置文件。对于log4j.properties,它看起来像:

log4j.rootLogger=DEBUG, file

# My Application Log
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=log4j.log
log4j.appender.file.logfile.Threshold=ALL
log4j.appender.file.MaxBackupIndex=100
log4j.appender.file.MaxFileSize=1Gb
log4j.appender.file.encoding=UTF8
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%p %t %c - %m%n

【讨论】:

以上是关于嵌入式 Undertow 日志输出的主要内容,如果未能解决你的问题,请参考以下文章

嵌入式开发输出调试和日志信息的几种方法

如何在 Undertow 嵌入式服务器中登录文件?

如何在运行时在 org.jboss.logging 中设置日志记录

Undertow HTTPS 监听器

禁用 undertow 日志记录

单片机笔记如何编写一个清晰的串口日志输出DEBUG文件(附源码)