私はspring-bootプロジェクト(バージョン1.5.1)とlogbackを使って作業しています。私application.properties
は、次のログの設定があります。springブートが指定されたファイルとcatalina.outの両方に記録されないようにする方法
logging.level.=info
logging.level.org.acme.myapp=info
logging.file=${catalina.home}/logs/AppLogFile.log
アプリケーションはこれが指定AppLogFile.log
に書き込まれ、またcatalina.out
にされて何かをログに記録する場合:
==> AppLogFile.log <==
2017-04-13 13:37:33.102 DEBUG 4646 --- [http-nio-8080-exec-25] c.l.c.c.controller.IndexPage : isAllowedToSeeContent: Homebase: MOCKBASE
==> catalina.out <==
2017-04-13 13:37:33.102 DEBUG 4646 --- [io-8080-exec-25] c.l.c.c.controller.IndexPage : isAllowedToSeeContent: Homebase: MOCKBASE
==> AppLogFile.log <==
2017-04-13 13:37:33.108 DEBUG 4646 --- [http-nio-8080-exec-25] c.l.c.c.controller.MedlistService : MedlistService::isControlDay 2017-04-13, true
==> catalina.out <==
2017-04-13 13:37:33.108 DEBUG 4646 --- [io-8080-exec-25] c.l.c.c.controller.MedlistService : MedlistService::isControlDay 2017-04-13, true
これはadditivity
問題のようです。ここで説明したようなlogback.xmlを提供することは本当に必要ですか:howto-configure-logback-for-logging? より直接的な方法はありますか?
アップデート:私はhowtoからの推薦に従ってください、私のクラスパスにlogback-spring.xml
を追加する場合であっても
:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}" />
<include resource="org/springframework/boot/logging/logback/file-appender.xml" />
<root>
<appender-ref ref="FILE" />
</root>
</configuration>
私が手に、次のエラー(一斉):
17:50:01.267 [localhost-startStop-1] DEBUG org.springframework.jndi.JndiPropertySource - JNDI lookup for name [LOGGING_patternLevel] threw NamingException with message: Name [LOGGING_patternLevel] is not bound in this Context. Unable to find [LOGGING_patternLevel].. Returning null.
17:50:01.267 [localhost-startStop-1] DEBUG org.springframework.jndi.JndiTemplate - Looking up JNDI object with name [java:comp/env/LOGGING_patternlevel]
空の文字列にlogging.pattern.console=
を設定すると、このトリックを行うように見えますが、これは本当に適切な解決策ですか?
はいしかし、ConsoleHandlerを削除しても効果はありません。 ハンドラー= 1catalina.org.apache.juli.AsyncFileHandler、...、4host-manager.org.apache.juli.AsyncFileHandler ' - ' .handlers = 1catalina.org.apache.juli.AsyncFileHandler' - - - 'grep -r isControlDay' 'catalina.out:18:05:29.640 ... isControlDay 2017-04-13、true' ' MyAppLog.log:18:05:29.640 ... isControlDay 2017-04-13、true' --- これはtomcat docuの推奨です。 - しかし、私は自分のアプリケーションのためだけでなく、システム全体で変更することを好むだろう。 – morecore
この後に再起動する必要があります。あなたのアプリはcatalina.outに書き込みません。 Tomcatはstdoutに向けられたすべてのものをcatalina.outにパイプします。これを変更するかstdoutへの書き込みを停止することができます(独自のログで行うこともできます)。 –
フィードバックいただきありがとうございます!しかし、.handlers = 1catalina.org.apache.juli.AsyncFileHandler、java.util.logging.ConsoleHandler'を '.handlers = 1catalina.org.apache 'に変更するだけです。juli.AsyncFileHandler'は効果がありません。私は新しくアンパックされたtomcat(8.5.12)と単純なhello worldの例でそれを試しました。 Tomcatが再起動されました。ログは 'hello.log'と' catalina.out'の両方に出力されます。また、tomcatが正しいプロパティファイルを使用していることを確認しました。それでもまだ何かが欠落しているようです。 – morecore