[英]Spring Boot log files in standalone tomcat are saved in XML format
因此,我一直想知道为什么tomcat在独立模式下以XML格式保存日志文件。 当我在嵌入式Tomcat中部署Spring Boot应用程序时,这没有发生。 我正在使用logback-spring.xml来配置日志。 即使禁用它,Tomcat仍将其保存为XML格式。 我什至尝试覆盖$CATALINA_HOME/conf
tomcats logging.properties
文件。
这是我得到的XML输出:
<record>
<date>2018-07-08T22:35:25</date>
<millis>1531089325236</millis>
<sequence>325</sequence>
<logger>org.apache.catalina.startup.Catalina</logger>
<level>INFO</level>
<class>org.apache.catalina.startup.Catalina</class>
<method>start</method>
<thread>1</thread>
<message>Server startup in 11151 ms</message>
</record>
这是我在application.properties
日志记录配置:
#logging.config=classpath:/logback-spring.xml
logging.file=/tmp/app.log
logging.file-name=app
logging.archive.path=/var/tmp/app
logging.file.max-size=10MB
logging.file.max-history=30
logging.archive.compressor=gz
logging.pattern.dateformat=yyyy-MM-dd HH:mm:ss.SSS
logging.pattern.file=%d{dd-MM-yyyy HH:mm:ss.SSS} %magenta([%thread]) %highlight(%-5level) %logger{36}.%M - %msg%n
logging.level.org.springframework.web=DEBUG
logging.level.org.hibernate=ERROR
这是我的logback-spring.xml
配置:
<?xml version="1.0" encoding="UTF-8"?>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>
${FILE_LOG_PATTERN}
</pattern>
</encoder>
</appender>
<springProperty name="LOG_ARCHIVE_PATH" source="logging.archive.path" />
<springProperty name="LOG_FILE_NAME" source="logging.file-name" />
<springProperty name="LOG_ARCHIVE_COMPRESSOR" source="logging.archive.compressor" />
<springProperty name="PATTERN" source="logging.pattern.file" />
<appender name="LOGROTATE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_FILE}</file>
<encoder>
<pattern>${PATTERN}</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<cleanHistoryOnStart>true</cleanHistoryOnStart>
<fileNamePattern>${LOG_ARCHIVE_PATH}/${LOG_FILE_NAME}.%d{dd-MM-yyyy}_%i.log.${LOG_ARCHIVE_COMPRESSOR}</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>${LOG_FILE_MAX_SIZE}</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>${LOG_FILE_MAX_HISTORY}</maxHistory>
</rollingPolicy>
</appender>
<springProfile name="dev">
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
</springProfile>
<springProfile name="prod" >
<root level="WARN">
<appender-ref ref="STDOUT" />
<appender-ref ref="LOGROTATE" />
</root>
</springProfile>
我非常确定,弹簧侧的配置还可以,因为它可以在嵌入式模式下工作。 Tomcat似乎是罪魁祸首,但对于如何解决此问题我一无所知。
阅读我的tomcat文档后,如果它无法解析tomcat logging.properties
文件的位置或某些属性,则该tomcat将退回Java的默认日志记录配置。 默认的Java日志记录配置位于$JAVA_HOME/lib/logging.properties
,并将XMLFormatter
用于文件日志。 Spring似乎无法以Tomcat的独立模式处理日志记录配置。 我找不到使用logback的方法,但是我覆盖了tomcat日志文件。 下面是一个示例:
handlers =java.util.logging.FileHandler,java.util.logging.ConsoleHandler
.level = INFO
# File Logging
java.util.logging.FileHandler.pattern = %h/logfilename%u.log
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.FileHandler.level = INFO
java.util.logging.FileHandler.limit = 10485760
java.util.logging.FileHandler.count = 10
#java.util.logging.ConsoleHandler.formatter = org.springframework.boot.logging.java.SimpleFormatter
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.ConsoleHandler.level = INFO
org.hibernate.validator.internal.util.Version.level = WARNING
org.apache.coyote.http11.Http11NioProtocol.level = WARNING
org.apache.tomcat.util.net.NioSelectorPool.level = WARNING
org.apache.catalina.startup.DigesterFactory.level = SEVERE
org.apache.catalina.util.LifecycleBase.level = SEVERE
#java.util.logging.SimpleFormatter.format=%4$s: %5$s [%1$tc]%n
java.util.logging.SimpleFormatter.format=%d{dd-MM-yyyy HH:mm:ss.SSS} %magenta([%thread]) %highlight(%-5level) %logger{36}.%M - %msg%n
另一个选择是将配置文件添加到$CATALINA_HOME/conf/logging.properties
tomcats现有logging.properties
文件中:
java.util.logging.FileHandler= java.util.logging.SimpleFormatter
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.