質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.37%

Logbackでファイル出力する場合の場所について

受付中

回答 1

投稿

  • 評価
  • クリップ 1
  • VIEW 8,064

score 25

いつもお世話になっております。

SpringBoot2のLogbackで、
application.propertiesからファイルの出力先を読み込んだ場合に、
予定しない場所にファイルが作成されます。
どのようにしたら、予定した場所にファイルが出力されるのでしょうか。
※予定しない場所とは、
対象プロジェクトフォルダ\logs配下にファイルが出力されます。
また、logback.xmlで

<property name="LOG_DIR" value="C:/logs" />


を使った時は、予定した場所に出力されます。

application.propertiesの内容は、以下の通りです。

LOG_DIR=C:\logs


logback.xmlの内容は、以下の通りです。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
 <!-- ファイルの出力先を指定する事。 -->
 <!-- 
   <property name="LOG_DIR" value="C:/logs" />
-->
  <property resource="application.properties" />

  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <target>System.out</target>
    <encoder>
      <pattern>%d{yyyy/MM/dd HH:mm:ss.SSS} [%t] %highlight(%-5le) %cyan(%-40.40lo{36}) - %green(%msg) %n</pattern>
    </encoder>
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
      <level>INFO</level>
    </filter>    
  </appender>

  <appender name="FILE_A" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${LOG_DIR}\SystemOut.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
       <!-- daily rollover -->
       <fileNamePattern>${LOG_DIR}\SystemOut_%d{yyyyMMdd}.log</fileNamePattern>
       <!-- keep 30 days worth of history -->
       <maxHistory>7</maxHistory> 
    </rollingPolicy>    
    <encoder>
      <pattern>%d{yyyy/MM/dd HH:mm:ss.SSS} [%t] %-5le %lo{36} [%file:%line] - %msg %n</pattern>
    </encoder>
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
      <level>INFO</level>
    </filter>    
  </appender>

  <appender name="FILE_B" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${LOG_DIR}\SystemErr.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
       <!-- daily rollover -->
       <fileNamePattern>${LOG_DIR}\SystemErr_%d{yyyyMMdd}.log</fileNamePattern>
       <!-- keep 30 days worth of history -->
       <maxHistory>7</maxHistory> 
    </rollingPolicy>    
    <encoder>
      <pattern>%d{yyyy/MM/dd HH:mm:ss.SSS} [%t] %-5le %lo{36} [%file:%line] - %msg %n</pattern>
    </encoder>
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
      <level>ERROR</level>
    </filter>    
  </appender>

  <root level="DEBUG">
    <appender-ref ref="STDOUT" />
    <appender-ref ref="FILE_A" />
    <appender-ref ref="FILE_B" />
  </root>
</configuration>
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

0

application.propertiesの内容は、以下の通りです。

LOG_DIR=C:\logs

とありますが、

logging.path=C:\logs

がspring-boot的には正しいと思います。

で、

logback.xml

<property resource="application.properties" />

を削除

${LOG_DIR}${LOG_PATH}に置き換え

で動くかどうかは別として挙動は変わるのではないでしょうか。

質問にある実装も間違ってはいないと思いますが、spring-bootを使うのであればspring-bootのドキュメントにあるやり方で実装する方が望ましいと思います。

以下参考

https://docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/03/19 12:32

    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    <include resource="org/springframework/boot/logging/logback/console-appender.xml"/>

    をしてないからのきがしないでもないが

    キャンセル

  • 2018/03/19 14:28

    ご連絡ありがとうございます。
    やってみます。

    キャンセル

  • 2018/03/19 22:36

    ご連絡頂きましたincludeを入れてみましたが、
    ${LOG_PATH}は参照できませんでした。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.37%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る