2017-10-19 39 views
1

提交我有了伐木工人在這樣SpringBoot 1.5.x的不是寫在logging.file

private static final Logger LOGGER = 
LoggerFactory.getLogger(myclass.class); 

了很多地方,這些記錄器正在寫我的控制檯,但不寫入文件的服務我在application.properties文件中指定這樣

logging.file=my-service.log 

我pom.xml文件

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.5.1.RELEASE</version> 
</parent> 
<dependencies> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-data-jpa</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-security</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-actuator</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.cloud</groupId> 
     <artifactId>spring-cloud-starter-config</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.cloud</groupId> 
     <artifactId>spring-cloud-context</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>com.microsoft.sqlserver</groupId> 
     <artifactId>sqljdbc</artifactId> 
     <version>4.2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.jasypt</groupId> 
     <artifactId>jasypt-spring31</artifactId> 
     <version>1.9.2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.commons</groupId> 
     <artifactId>commons-lang3</artifactId> 
     <version>3.5</version> 
    </dependency> 
    <dependency> 
     <groupId>com.h2database</groupId> 
     <artifactId>h2</artifactId> 
     <version>1.4.193</version> 
    </dependency> 
    <dependency> 
     <groupId>com.maxmind.geoip</groupId> 
     <artifactId>geoip-api</artifactId> 
     <version>1.3.1</version> 
    </dependency> 

    <!-- AWS Dependencies --> 
    <dependency> 
     <groupId>org.springframework.cloud</groupId> 
     <artifactId>spring-cloud-aws-autoconfigure</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.cloud</groupId> 
     <artifactId>spring-cloud-aws-context</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.cloud</groupId> 
     <artifactId>spring-cloud-aws-actuator</artifactId> 
    </dependency> 
    <!-- END of AWS Dependencies --> 

我已經TR ied添加我自己的logback-spring.xml文件,該文件只寫入文件,似乎只停止打印到控制檯,但仍不寫入文件。這裏描述Spring Boot - no log file written (logging.file is not respected)

我已經通過代碼並注意到LoggingSystem類正確設置屬性。另外,如果我排除這樣

<dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-data-jpa</artifactId> 
     <exclusions> 
      <exclusion> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-starter-logging</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 

然後創建服務日誌文件,但通過內部的Java處理程序啓動日誌記錄依賴,它的格式不正確。我想使用Spring,因爲它可以在將日誌級別設置爲TRACE或DEBUG時顯示更多信息。

有沒有其他人看到這個問題,並知道如何讓春天寫服務日誌到該指定的字段?

UPDATE

看來問題是從這些依賴

<dependency> 
     <groupId>org.springframework.cloud</groupId> 
     <artifactId>spring-cloud-starter-config</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.cloud</groupId> 
     <artifactId>spring-cloud-context</artifactId> 
    </dependency> 

似乎任何springframework.cloud依存度將導致項目不能創建logging.file文件來了。

回答

1

我發現問題和解決方案。 我需要把日誌屬性像

logging.file=my-service.log 

bootstrap.properties文件。該文件應位於application.properties文件所在的資源目錄中。

看來,當使用springframework.cloud依賴性時,首先調用BootstrapApplicationListener來初始化LogbackLoggingSystem類。然後,由於這些屬性被初始化,那麼應用程序會在application.properties文件中忽略它們。

更多這裏https://github.com/spring-projects/spring-boot/issues/7099