Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring Boot正在忽略外部application.properties的日志记录级别_Java_Spring_Tomcat_Logging_Spring Boot - Fatal编程技术网

Java Spring Boot正在忽略外部application.properties的日志记录级别

Java Spring Boot正在忽略外部application.properties的日志记录级别,java,spring,tomcat,logging,spring-boot,Java,Spring,Tomcat,Logging,Spring Boot,我正在运行SpringBoot(版本1.5.2.RELEASE)应用程序,该应用程序打包在Tomcat上的war文件中。在我的上下文文件(conf/Catalina/localhost/ROOT.xml)中,我指定了外部属性文件的路径,如下所示: 在路径/opt/shared/home/.airlines data/中,我有一个应用程序.properties文件,其中包含以下行: logging.level.root=WARN logging.level.org.hibernate=ERRO

我正在运行SpringBoot(版本1.5.2.RELEASE)应用程序,该应用程序打包在Tomcat上的war文件中。在我的上下文文件(
conf/Catalina/localhost/ROOT.xml
)中,我指定了外部属性文件的路径,如下所示:


在路径
/opt/shared/home/.airlines data/
中,我有一个
应用程序.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忽略了所有日志级别设置。它记录从信息级别到更高级别的所有内容。Hibernate还将所有查询记录到日志文件中。这使得日志文件在短时间内非常大。是否有其他方法可以使用外部配置将日志记录级别更改为警告或错误并禁用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') 
}
My 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: org.apache.catalina.connector.RequestFacade@14ab2c1f
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: org.apache.catalina.connector.RequestFacade@14ab2c1f
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文件放在我的类路径中:


它在我的本地机器上工作,但在服务器上被忽略

更新2017-04-07:

我在catalina.out日志中找到了一些附加信息,其中包含了打印到控制台的所有内容(可能会有帮助):

因为我的服务器是基于Jelast的云服务器,所以它是用这些参数自动配置的。不知道它是否有什么关系,但param
-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
我们能够找到的一些文章(,)说:

Spring Boot中的默认日志记录支持

Spring Boot参考文档说:

默认情况下,如果您使用“Starter POMs”,则将使用Logback进行 登录中。还包括适当的回写路由,以确保 使用javautil日志、Commons日志、Log4J的依赖库 否则SLF4J将全部正常工作

因此,您可以在application.properties文件中调整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

更改完成后,调试消息应该会从catalina中消失。out

您正在使用哪个记录器?是什么让你认为它忽略了所有的层次?请提供您正在使用的任何记录器的配置,如log4j、slf4j等。我使用默认的Spring引导配置,因此记录器应该是Logback。除了application.properties中的那些行之外,我不使用任何记录器配置。我用日志文件中的几行示例更新了这个问题。今天的日志大小已经达到1,5MB,所有条目都来自调试级别。此外,当我尝试在本地机器上使用此配置时(Spring Boot作为带有embed Tomcat的jar文件运行),它会按预期工作并隐藏所有日志消息。只有当Spring Boot作为Tomcat内部的war文件运行时,生产服务器上才会出现此问题。您指定的输出显示使用了自定义模式。因此,请检查生产服务器的上下文路径并搜索资源路径。必须有一些logback xml/groovy文件或log4j属性/xml文件。或者最坏的情况是,其中任何一个的配置类都是基于服务器环境或配置文件管理设置日志级别。即使这不能解决问题,也请尝试升级您的springboot版本并检查结果。。我记得在1.3X中读过一些与日志相关的问题,谢谢你的建议。不幸的是,我找不到logback或log4j配置文件。我还将Spring Boot更新为最新的1.5.2.0版本。这也没用。
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