2016-06-28 15 views
5

私のSpringブートアプリケーションの1つが、Maven テストフェーズで問題を引き起こします。テスト中にSpringブートで/tmp/spring.logファイルが使用される

テスト中と「通常の」アプリケーション実行時の両方で、Springブートアプリケーションはsrc/main/resources/logback-spring.xmlと非常によく似たログバック構成ファイルを使用します。この構成ファイル(推移的)には、ログバック構成ファイルbase.xmlfile-appender.xmlが含まれています。これらの構成ファイルは、ログバックプロパティLOG_FILE=/tmp/spring.logを設定します。

ファイル/tmp/server.logは、ユーザーとグループ${MY_SPRING_BOOT_APPLICATION}が所有することをお勧めします。

Jenkinsはユーザーjenkinsとして実行されます。 jenkinsには/tmp/server.logの書き込み権限がありません。したがって、Jenkinsによって実行されると、JUnitテストは失敗します。

  • それは時にうまく機能するようにロギングを設定するための最良の方法は何ですかジェンキンスビルドと-テストそれが設定されますので、毎日ローリングログにログを置くSpring Boot's SysV init.d service functionalityを(活用/var/log/)?
  • 複数のSpringブートアプリケーションが同時に実行されている場合、ファイル/tmp/spring.logは同時に変更される(したがって破損する)のですか?私の春のブートアプリケーションで

答えて

5

、私はsrc/test/resources/logback-test.xml<property name="LOG_TEMP" value="./logs"/>を追加しました:

<?xml version="1.0" encoding="UTF-8"?> 

<configuration scan="true"> 
    <property name="LOG_TEMP" value="./logs"/> 
    <include resource="org/springframework/boot/logging/logback/base.xml"/> 

    <logger name="com.example" level="INFO"/> 


    <root level="WARN"> 
     <appender-ref ref="CONSOLE"/> 
    </root> 

</configuration> 

この方法は、Mavenのテスト中に、別のログファイルには、現在の(テスト)作業ディレクトリに作成されます。

Props to welcor for helping out

+1

プロパティの前にプロパティオーバーライドを設定していることを確認してください(ここに示す)。 –

関連する問題