java – 为什么catalina.home_IS_UNDEFINED目录是由Logback在同一项目目录中生成的?

前端之家收集整理的这篇文章主要介绍了java – 为什么catalina.home_IS_UNDEFINED目录是由Logback在同一项目目录中生成的?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我为我的应用程序编写了logback配置文件,但是当我在进行maven clean install(mvn clean install)时,它在项目目录中生成了一个带有日志文件的catalina.home_IS_UNDEFINED目录.
为什么生成这个目录?

我不希望它出现在我的项目目录中.

有什么帮助解决这个问题?

这是配置文件.

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <configuration>
  3.  
  4. <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
  5. <encoder>
  6. <pattern>%date{HH:mm:ss.SSS} %-5p [%t] %c{1} - %m%n</pattern>
  7. </encoder>
  8. </appender>
  9.  
  10. <appender name="MY_APP_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
  11. <file>${catalina.home}/logs/myApplication.log</file>
  12. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  13. <FileNamePattern>${catalina.home}/logs/myApplication.%d{yyyy-MM-dd}.log</FileNamePattern>
  14. </rollingPolicy>
  15. <encoder>
  16. <pattern>%-5p %date{HH:mm:ss.SSS} [%t] %c{1} - %m%n</pattern>
  17. </encoder>
  18. <append>true</append>
  19. </appender>
  20.  
  21. <logger name="org.springframework" level="WARN"/>
  22.  
  23.  
  24. <root>
  25. <priority value="INFO"/>
  26. <appender-ref ref="CONSOLE"/>
  27. <appender-ref ref="MY_APP_LOG"/>
  28. </root>
  29.  
  30. </configuration>

解决方法

背景

属性加载失败,因为它仅由tomcat填充.它不是由maven编译任务填充的.

解决方案1

在logback.xml中设置这样的属性

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration>
  3.  
  4. <if condition='isDefined("catalina.home")'>
  5. <then>
  6. <property name="log.folder" value="${catalina.home}/logs"/>
  7. </then>
  8. <else>
  9. <property name="log.folder" value="./target/logs"/>
  10. </else>
  11. </if>
  12.  
  13. <appender name="companyMyAppServiceAppender" class="ch.qos.logback.core.FileAppender">
  14. <file>${log.folder}/company.myApp.log</file>
  15. ...
  16. </appender>
  17.  
  18. ...
  19.  
  20. </configuration>

这将在编译时在目标文件夹中创建日志文件,该文件将被清除.

解决方案2

“重写”值:

  1. <property name="log.folder" value="./target/logs"/>
  2. <if condition='isDefined("catalina.home")'>
  3. <then>
  4. <property name="log.folder" value="${catalina.home}/logs"/>
  5. </then>
  6. </if>

NB!

并且不要忘记导入maven janino依赖

  1. <!-- The org.codehaus.janino:commons-compiler:2.7.8 dependency -->
  2. <!-- will be automatically pulled in by Maven's transitivity rules -->
  3. <dependency>
  4. <groupId>org.codehaus.janino</groupId>
  5. <artifactId>janino</artifactId>
  6. <version>2.7.8</version>
  7. </dependency>

猜你在找的Java相关文章