コンソールではなくファイルにメッセージを記録したい。私はSpring Bootを使用しており、私の構成は次のとおりです。
application.properties:
logging.level: DEBUG
logging.level: ERROR
logging.file: ${HOME}/application.log
application.log
ファイルでのみINFOのログメッセージを取得していますが、ERRORおよびDEBUGメッセージも必要です。
私の要件は、error.log
ファイルにERRORメッセージ、debug.log
にDEBUGメッセージ、info.log
にINFOメッセージが必要であることです。
どんな助けも大歓迎です。
Spring Bootでは、application.propertiesを使用してロギングシステムのいくつかの基本的な側面を設定できますが、 limits があります。
ロギングシステムのよりきめ細かい設定を構成するには、対象のLoggingSystemでサポートされているネイティブの構成形式を使用する必要があります。
言い換えると、プロパティで特にサポートされていないことをしたい場合は、logback.xml
ファイルの追加と編集(logbackを使用していると仮定)を回避することはできません。
それでは、要件を見ていきましょう。
docs によると:
デフォルトでは、Spring Bootはコンソールにのみログを記録し、ログファイルは書き込みません。コンソール出力にログファイルを追加(強調を追加)したい場合は、logging.fileまたはlogging.pathプロパティを設定する必要があります( application.propertiesの例)。
つまり、notコンソールへのロギングはプロパティを使用して実行できません。
デフォルトでは、ERRORを含むはずのINFOレベルでSpring Bootがログを記録しますが、デフォルト設定でnot ERRORログを取得しますか?
また、各レベルではなく、ログに記録する最高レベルのみを指定し、レベルを設定するロガーを指定する必要があります。
これは機能しません:
logging.level: DEBUG
logging.level: ERROR
これは、 docs に従ってカスタムログレベルを構成する方法の例です。
logging.level.org.springframework.web:デバッグ
logging.level.org.hibernate:エラー
logging.level.*
プロパティを使用して、次のようにルートロガーのレベルを設定することもできます。
logging.level.ROOT: DEBUG
ROOTロガーでDEBUGロギングを設定すると、大量のログが生成されることに注意してください。ここでテストしたところ、何もせずに起動時に約13MBのログを取得しました。
繰り返しますが、これはプロパティのみを使用して行うことはできません。 Spring Bootでは、すべてのログを含むlogging.file
プロパティを1つだけ設定できます。
使用可能なロギングプロパティとサンプル値の完全なリストについては、 here を参照してください。
コンソールロギングを無効にしてファイルにのみ出力を書き込む場合は、console-appender.xmlではなくfile-appender.xmlをインポートするカスタムlogback-spring.xmlが必要です。
Spring boot docs で説明されています:
ここでは、ROOTログレベルを複数のレベルに設定しようとしているため、これは機能しません。
logging.level: DEBUG
logging.level: ERROR
これらは、異なるログレベルと、最小<<最大からの順序です。
OFF << FATAL << ERROR << WARN << INFO << DEBUG << TRACE << ALL
# To set logs level as per your need.
logging.level.org.springframework = debug
logging.level.tech.hardik = trace
# To store logs to external file
# Here use strictly forward "/" slash for both Windows, Linux or any other os, otherwise, your logs it won't work.
logging.file=D:/spring_app_log_file.log
# To customize logging pattern.
logging.pattern.file= "%d{yyyy-MM-dd HH:mm:ss} - %msg%n"
ログをより鮮明にカスタマイズするには、このドキュメントを通過してください。
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html
これらのプロパティを使用する代わりに、application.propertiesと同じフォルダにlogback.xmlを追加してみてください。 logback.xmlをログに必要な方法で構成します。