Spring Boot忽略来自外部application.properties的日志记录级别
我正在运行打包在Tomcat war文件中的Spring Boot(version 1.5.2.RELEASE)应用程序。在我的上下文文件(conf/Catalina/localhost/ROOT.xml
)我指定的路径外部属性文件是这样的:Spring Boot忽略来自外部application.properties的日志记录级别
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Environment name="spring.config.location" value="file:/opt/shared/home/.airlines-data/" type="java.lang.String"/>
</Context>
路径/opt/shared/home/.airlines-data/
里面我有一个application.properties
文件与休耕行:
logging.level.root=WARN
logging.level.org.hibernate=ERROR
logging.level.org.springframework.web=WARN
spring.jpa.properties.hibernate.show_sql=false
spring.jpa.show-sql=false
logging.file=/opt/shared/home/.airlines-data/Errors.log
的文件正确读取。该属性logging.file=/opt/shared/home/.airlines-data/Errors.log
也正确加载,如果我将其值更改为别的东西,一切按预期工作。不幸的是,Spring Boot忽略了所有的日志级别设置。它记录从INFO级别和以上的所有内容。另外Hibernate将所有查询记录到日志文件中。这使得日志文件在很短的时间内变得非常大。有没有其他方法可以将日志记录级别更改为WARN或ERROR,并使用外部配置禁用Hibernate SQL日志记录?我正在使用Spring Boot提供的标准日志记录设置。下面是我的依赖关系:
dependencies {
compile('org.springframework.boot:spring-boot-starter-jdbc')
compile('org.springframework.boot:spring-boot-starter-jooq')
compile('org.springframework.boot:spring-boot-starter-data-jpa')
compile('org.liquibase:liquibase-core')
compile('org.springframework.boot:spring-boot-starter-security')
compile('org.springframework.boot:spring-boot-starter-thymeleaf')
compile('org.springframework.boot:spring-boot-starter-web')
compile('org.springframework.boot:spring-boot-starter-mail')
compile("org.springframework:spring-messaging")
compile('org.apache.commons:commons-lang3:3.4')
compile('commons-io:commons-io:2.4')
compile('commons-beanutils:commons-beanutils:1.9.2')
compile('com.samaxes.filter:cachefilter:2.3.1')
compile('com.monitorjbl:xlsx-streamer:0.2.12')
compile('org.apache.commons:commons-csv:1.2')
compile('org.imgscalr:imgscalr-lib:4.2')
compile('xerces:xercesImpl:2.11.0')
compile('com.fasterxml.jackson.datatype:jackson-datatype-hibernate4:2.6.4')
compile('org.thymeleaf.extras:thymeleaf-extras-springsecurity4:2.1.2.RELEASE')
compile('org.jodd:jodd-mail:3.7.1')
providedRuntime('org.springframework.boot:spring-boot-starter-tomcat')
testCompile('org.springframework.boot:spring-boot-starter-test')
}
我的error.log文件填满真的很快,并包含类似的很多线路:
2017-02-17 18:45:13.338 DEBUG 5168 --- [localhost-startStop-1] o.s.boot.SpringApplication : Loading source class pl.eb2b.AirlinesApplication,class org.springframework.boot.context.web.ErrorPageFilter
2017-02-17 18:45:13.851 DEBUG 5168 --- [localhost-startStop-1]
2017-02-17 18:45:13.851 DEBUG 5168 --- [localhost-startStop-1] o.s.b.c.c.ConfigFileApplicationListener : Loaded config file 'file:/opt/shared/home/.airlines-data/application.properties'
2017-02-17 18:45:13.852 DEBUG 5168 --- [localhost-startStop-1] o.s.b.c.c.ConfigFileApplicationListener : Loaded config file 'classpath:/application.properties'
2017-02-18 00:21:34.997 DEBUG 9026 --- [http-nio-8080-exec-8] o.s.b.c.web.OrderedRequestContextFilter : Bound request context to thread: [email protected]
2017-02-18 00:21:35.000 DEBUG 9026 --- [http-nio-8080-exec-8] o.s.b.c.web.OrderedRequestContextFilter : Cleared thread-bound request context: [email protected]
2017-02-20 13:15:09.526 DEBUG 11701 --- [http-nio-8080-exec-4] org.hibernate.SQL : select count(*) as y0_ from cars_car_contract this_
我也曾尝试把的logback-spring.xml文件中我类路径:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<root level="WARN">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</root>
<logger name="org.hibernate" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</logger>
</configuration>
它在我的本地机器上工作,但在服务器上被忽略。
更新2017年4月7日:
我发现在catalina.out的日志中包含已打印到控制台一切一些附加信息(也许这将是有益的):
07-Apr-2017 06:12:48.736 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: /opt/repo/versions/8.5.3
07-Apr-2017 06:12:48.736 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: /opt/repo/versions/8.5.3
07-Apr-2017 06:12:48.736 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/opt/repo/versions/8.5.3/conf/logging.properties
07-Apr-2017 06:12:48.736 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
07-Apr-2017 06:12:48.736 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -DReceiverIp=
07-Apr-2017 06:12:48.737 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -DMagicPort=
07-Apr-2017 06:12:48.737 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djvm=jelastic
07-Apr-2017 06:12:48.737 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.awt.headless=true
07-Apr-2017 06:12:48.737 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.net.preferIPv4Stack=true
07-Apr-2017 06:12:48.737 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -DjvmRid=
07-Apr-2017 06:12:48.737 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xms32M
07-Apr-2017 06:12:48.737 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmn30M
07-Apr-2017 06:12:48.737 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmx512M
07-Apr-2017 06:12:48.737 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xminf0.1
07-Apr-2017 06:12:48.738 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmaxf0.3
07-Apr-2017 06:12:48.738 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:+UseG1GC
07-Apr-2017 06:12:48.738 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:+UseCompressedOops
07-Apr-2017 06:12:48.738 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:MinHeapFreeRatio=15
07-Apr-2017 06:12:48.738 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:MaxHeapFreeRatio=30
07-Apr-2017 06:12:48.738 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
07-Apr-2017 06:12:48.738 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/opt/repo/versions/8.5.3
07-Apr-2017 06:12:48.738 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/opt/repo/versions/8.5.3
07-Apr-2017 06:12:48.738 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/opt/repo/versions/8.5.3/temp
由于我的服务器是基于Jelastic的云服务器,因此使用这些参数自动配置它。不知道它是否有什么要做,但参数-Djava.util.logging.config.file=/opt/repo/versions/8.5.3/conf/logging.properties
看起来像它与日志记录有关。以下是该文件的内容:
handlers = 1catalina.org.apache.juli.AsyncFileHandler, 2localhost.org.apache.juli.AsyncFileHandler, 3manager.org.apache.juli.AsyncFileHandler, 4host-manager.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler
.handlers = 1catalina.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler
1catalina.org.apache.juli.AsyncFileHandler.level = FINE
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
2localhost.org.apache.juli.AsyncFileHandler.level = FINE
2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.
3manager.org.apache.juli.AsyncFileHandler.level = FINE
3manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.AsyncFileHandler.prefix = manager.
4host-manager.org.apache.juli.AsyncFileHandler.level = FINE
4host-manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager.
java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = WARNING
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.AsyncFileHandler
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.AsyncFileHandler
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.AsyncFileHandler
默认的日志记录在春季启动
春天引导参考支持文件说:
默认情况下,如果您使用“Starter POM”,Logback将用于 日志记录。还包括适当的Logback路由,以确保使用Java Util日志记录,Commons日志记录,Log4J 或SLF4J的依赖库都能正常工作。
因此,您可以在应用程序中调整SpringBoot的日志级别。属性文件,最有可能通过这条路径:改变完成
cat /opt/tomcat/webapps/ROOT/WEB-INF/classes/application.properties
logging.level.*=OFF
logging.level.org.springframework.web=WARN
logging.level.org.springframework.boot=OFF
logging.level.org.hibernate.SQL=OFF
后,DEBUG消息应该从catalina.out的
哪个记录您使用的消失?是什么让你认为它忽略了所有的水平?请提供您正在使用的任何记录器的配置,如log4j,slf4j等。 –
我使用默认的Spring Boot配置,因此记录器应该是Logback。除了来自application.properties的那些行之外,我不使用任何记录器配置。我更新了日志文件中几条示例行的问题。今天的日志已经有1.5MB的大小,所有的条目都来自DEBUG级别。另外,当我尝试在本地机器上使用此配置(Spring Boot作为嵌入Tomcat的jar文件运行时),它按预期工作并隐藏所有这些日志消息。当Spring Boot作为Tomcat内部的war文件运行时,只会在生产服务器上发生此问题。 –
您指定的输出显示已使用自定义模式。因此请检查您的生产服务器的上下文路径并搜索资源路径。必须有一些logback xml/groovy文件或log4j properties/xml文件。或者最糟糕的情况下,任何配置类都会根据服务器环境或配置文件管理设置日志级别。 –