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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

1回答

15065閲覧

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

a0841_1974

総合スコア29

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

1クリップ

投稿2018/03/10 13:45

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

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>

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

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

properties

1LOG_DIR=C:\logs

とありますが、

properties

1logging.path=C:\logs

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

で、

logback.xml

xml

1<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/16 07:24

YukiYoshida

総合スコア93

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

a0841_1974

2018/03/17 06:25

ご連絡ありがとうございます。 ご連絡頂きました内容を試しましたがダメでした。 C:\logs配下にファイルは作成されません。 対象プロジェクトフォルダ直下にLOG_PATH_IS_UNDEFINEDフォルダが作成され、このフォルダ配下にSystemOut.log、SystemErr.logファイルが作成されました。 ただし、SystemOut.log、SystemErr.logの中身は空っぽで何もログが出力されませんでした。
a0841_1974

2018/03/17 06:32

上記コメントに続きがありました。 LOG_PATH_IS_UNDEFINEDフォルダとは別に対象プロジェクトフォルダ\logs配下にSystemOut.log、SystemErr.logが作成されておりました。 こちらのログファイルには想定していたログが出力さておりました。
a0841_1974

2018/03/19 03:09

logback.xml上で、${LOG_PATH}を使用する事は出来ないのでしょうか。 logback.xmlをlogback-spring.xmlと変更しても同じ現象が発生しました。
退会済みユーザー

退会済みユーザー

2018/03/19 03:32

<include resource="org/springframework/boot/logging/logback/defaults.xml"/> <include resource="org/springframework/boot/logging/logback/console-appender.xml"/> をしてないからのきがしないでもないが
a0841_1974

2018/03/19 05:28

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

2018/03/19 13:36

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問