通过 Spring Boot 应用程序关闭 Tomcat 日志记录
Posted
技术标签:
【中文标题】通过 Spring Boot 应用程序关闭 Tomcat 日志记录【英文标题】:Turn off Tomcat logging via Spring Boot Application 【发布时间】:2016-05-30 21:02:00 【问题描述】:我在 Tomcat8 上部署了一个 Spring Boot 应用程序
当应用程序启动时,我看到以下内容
18-Feb-2016 15:28:12.164 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.endorsed.dirs=
--- Many more JVM arguments
. ___ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.3.1.RELEASE)
18-Feb-2016 15:28:23.328 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /var/lib/tomcat8/webapps/ROOT has finished in 10,922 ms
18-Feb-2016 15:28:23.351 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
我想停止通过 org.apache.catalina.startup.VersionLoggerListener 记录 JVM 参数
我的资源文件夹中有一个 logback.xml 文件
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d %-5level [%thread] %logger0: %msg%n</pattern>
</encoder>
</appender>
<root>
<level value="ERROR" />
<appender-ref ref="consoleAppender" />
</root>
</configuration>
一旦 Spring 容器加载但在 JVM arg 被记录后,这似乎会启动并将日志记录减少到 ERROR
有谁知道如何停止 VersionLoggerListener 记录?
【问题讨论】:
你为什么在乎?忽略序言。 JVM 参数包含我访问的资源的用户名和密码。 这完全不是一个聪明的方法......但是那些有权访问日志的人也可能能够看到调用您的应用程序的脚本,因此在隐藏该信息时您不会获得太多收益。尝试通过其他方式传递凭据。 此时我只想从日志中删除信息 【参考方案1】:您可以通过从 Tomcats server.xml 中删除 <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
来禁用 VersionsLoggerListener。
【讨论】:
谢谢,我试图避免编辑 tomcat server.xml 中的任何内容。无论如何在我拥有的网络应用程序中执行此操作? 那么你应该使用嵌入式Tomcat。我认为监听器是在 spring boot 应用程序启动之前由 Tomcat 执行的。以上是关于通过 Spring Boot 应用程序关闭 Tomcat 日志记录的主要内容,如果未能解决你的问题,请参考以下文章
在 Spring Boot 中自动生成 API 文档 [关闭]
阻止 Spring Boot 应用程序关闭,直到所有当前请求都完成