删除backgroundpreinitializer上不相关的日志

cl25kdpy  于 2021-10-10  发布在  Java
关注(0)|答案(1)|浏览(648)

编辑我现在无法升级tomcat,因此相关答案与此处无关
我们使用的是8.5.50,遇到的bug会产生如下日志:

  1. 2021-06-06 12:37:50,482 DEBUG [background-preinit] messageinterpolation.ResourceBundleMessageInterpolator (ResourceBundleMessageInterpolator.java:220) - Failed to load expression factory via classloader ParallelWebappClassLoader
  2. context: ROOT
  3. delegate: false
  4. ----------> Parent Classloader:
  5. java.net.URLClassLoader@76f856a8
  6. javax.el.ELException: Unable to find ExpressionFactory of type [# Licensed to the Apache Software Foundation (ASF) under one or more]
  7. at javax.el.ExpressionFactory.newInstance(ExpressionFactory.java:154) ~[el-api.jar:3.0.FR]
  8. at javax.el.ExpressionFactory.newInstance(ExpressionFactory.java:93) ~[el-api.jar:3.0.FR]
  9. at org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator.canLoadExpressionFactory(ResourceBundleMessageInterpolator.java:216) [hibernate-validator-6.2.0.Final.jar:6.2.0.Final]
  10. at org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator.buildExpressionFactory(ResourceBundleMessageInterpolator.java:170) [hibernate-validator-6.2.0.Final.jar:6.2.0.Final]
  11. at org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator.<init>(ResourceBundleMessageInterpolator.java:94) [hibernate-validator-6.2.0.Final.jar:6.2.0.Final]
  12. at org.hibernate.validator.internal.engine.AbstractConfigurationImpl.getDefaultMessageInterpolator(AbstractConfigurationImpl.java:573) [hibernate-validator-6.2.0.Final.jar:6.2.0.Final]
  13. at org.hibernate.validator.internal.engine.AbstractConfigurationImpl.getDefaultMessageInterpolatorConfiguredWithClassLoader(AbstractConfigurationImpl.java:822) [hibernate-validator-6.2.0.Final.jar:6.2.0.Final]
  14. at org.hibernate.validator.internal.engine.AbstractConfigurationImpl.getMessageInterpolator(AbstractConfigurationImpl.java:483) [hibernate-validator-6.2.0.Final.jar:6.2.0.Final]
  15. at org.hibernate.validator.internal.engine.ValidatorFactoryImpl.<init>(ValidatorFactoryImpl.java:153) [hibernate-validator-6.2.0.Final.jar:6.2.0.Final]
  16. at org.hibernate.validator.HibernateValidator.buildValidatorFactory(HibernateValidator.java:38) [hibernate-validator-6.2.0.Final.jar:6.2.0.Final]
  17. at org.hibernate.validator.internal.engine.AbstractConfigurationImpl.buildValidatorFactory(AbstractConfigurationImpl.java:451) [hibernate-validator-6.2.0.Final.jar:6.2.0.Final]
  18. at org.springframework.boot.autoconfigure.BackgroundPreinitializer$ValidationInitializer.run(BackgroundPreinitializer.java:149) [spring-boot-autoconfigure-2.5.0.jar:2.5.0]
  19. at org.springframework.boot.autoconfigure.BackgroundPreinitializer$1.runSafely(BackgroundPreinitializer.java:111) [spring-boot-autoconfigure-2.5.0.jar:2.5.0]
  20. at org.springframework.boot.autoconfigure.BackgroundPreinitializer$1.run(BackgroundPreinitializer.java:102) [spring-boot-autoconfigure-2.5.0.jar:2.5.0]
  21. at java.lang.Thread.run(Thread.java:748) [?:1.8.0_151]
  22. Caused by: java.lang.ClassNotFoundException: # Licensed to the Apache Software Foundation (ASF) under one or more
  23. at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1358) ~[catalina.jar:8.5.50]
  24. at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1180) ~[catalina.jar:8.5.50]
  25. at javax.el.ExpressionFactory.newInstance(ExpressionFactory.java:147) ~[el-api.jar:3.0.FR]
  26. ... 14 more

我无法使用应用程序的log4j和tomcat/conf/logging.properties删除日志

  1. messageinterpolation.ResourceBundleMessageInterpolator.level = INFO
  2. org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator.level = INFO

如何删除这些日志?
相关依赖项:

  1. <apache.commons.logging-version>1.1.3</apache.commons.logging-version>
  2. <apache.httpcomponents-version>4.5.2</apache.httpcomponents-version>
  3. <apache.log4j-new-version>2.0.2</apache.log4j-new-version>
  4. <apache.log4j-old-version>1.2.17</apache.log4j-old-version>
  5. <org.slf4j-version>1.7.21</org.slf4j-version>
  6. <hibernate-version>5.5.0.Final</hibernate-version>
  7. <dependency>
  8. <groupId>org.hibernate</groupId>
  9. <artifactId>hibernate-entitymanager</artifactId>
  10. <version>${hibernate-version}</version>
  11. </dependency>
  12. <dependency>
  13. <groupId>org.apache.logging.log4j</groupId>
  14. <artifactId>log4j-core</artifactId>
  15. <version>${apache.log4j-new-version}</version>
  16. </dependency>
  17. <dependency>
  18. <groupId>log4j</groupId>
  19. <artifactId>log4j</artifactId>
  20. <version>${apache.log4j-old-version}</version>
  21. <exclusions>
  22. <exclusion>
  23. <groupId>com.sun.jmx</groupId>
  24. <artifactId>jmxri</artifactId>
  25. </exclusion>
  26. <exclusion>
  27. <groupId>com.sun.jdmk</groupId>
  28. <artifactId>jmxtools</artifactId>
  29. </exclusion>
  30. <exclusion>
  31. <groupId>javax.jms</groupId>
  32. <artifactId>jms</artifactId>
  33. </exclusion>
  34. </exclusions>
  35. </dependency>
  36. <dependency>
  37. <groupId>log4j</groupId>
  38. <artifactId>apache-log4j-extras</artifactId>
  39. <version>${apache.log4j-old-version}</version>
  40. </dependency>
  41. <dependency>
  42. <groupId>org.slf4j</groupId>
  43. <artifactId>slf4j-simple</artifactId>
  44. <version>${org.slf4j-version}</version>
  45. </dependency>
  46. <dependency>
  47. <groupId>org.slf4j</groupId>
  48. <artifactId>jcl-over-slf4j</artifactId>
  49. <version>${org.slf4j-version}</version>
  50. </dependency>
  51. <dependency>
  52. <groupId>org.slf4j</groupId>
  53. <artifactId>jul-to-slf4j</artifactId>
  54. <version>${org.slf4j-version}</version>
  55. </dependency>
  56. <dependency>
  57. <groupId>org.slf4j</groupId>
  58. <artifactId>log4j-over-slf4j</artifactId>
  59. <version>${org.slf4j-version}</version>
  60. </dependency>
  61. <dependency>
  62. <groupId>commons-logging</groupId>
  63. <artifactId>commons-logging</artifactId>
  64. <version>${apache.commons.logging-version}</version>
  65. </dependency>
gg58donl

gg58donl1#

Hibernate4.x和更高版本使用jboss日志作为日志接口(参见文档)。为了忽略这些消息,您需要确定哪个日志系统正在生成它们。
对于依赖项,所有hibernate消息都应转到log4j 2。设置:

  1. <Logger name="org.hibernate.validator.messageinterpolation" level="INFO" />

应该禁用这些消息。
备注:您的log4j 1.x日志记录系统配置错误:两者都有 log4jlog4j-over-slf4j (替代log4j1.x,它将所有内容发送到slf4j)在您的依赖项中。两个实现中选择哪一个是随机的。

相关问题