36994


環境Google Cloud Platform(GKE)  
Spring BootアプリケーションをGKEを使ってデプロイしています。  
tomcatのaccess.logファイルをファイルには保存できたのですが、  
クーバネイティスが標準出力を拾ってStackDriverに転送してくれるため  
ファイルではなく、標準出力に出力したいのですが、可能でしょうか？


CC BY-SA 3.0
2017-08-07T04:19:21.387
36989
2017-08-07T10:03:26.517
24761
question
spring-boot
Spring Boot1.5.3でaccess.logをファイルではなく標準出力に出力するには


トリッキーな方法ですが、[こういうやり方](https://github.com/ImmobilienScout24/tomcat-stdout-
accesslog/issues/2)があるみたいです。

なので、Linuxであれば`application.properties`に以下の定義を追加すれば、うまくいくのではないかと思います。

[code]

    server.tomcat.accesslog.directory=/proc/self/fd
    server.tomcat.accesslog.prefix=1
    server.tomcat.accesslog.suffix=
    server.tomcat.accesslog.rotate=false
    server.tomcat.accesslog.pattern=%h %l %u %t &quot;%r&quot; %s %b
    
[/code]

* * *

※Tomcat
8.0のアクセスログの出力は`org.apache.catalina.valves.AccessLogValve`が担当していて、`conf/server.xml`の`<Valve
className="org.apache.catalina.valves.AccessLogValve" …`  
の箇所で細かい設定をしています。

これと同様のことは、Spring Boot
1.5.3では`application.properties`(または`application.yml`)に`server.tomcat.accesslog.`で始まる定義をすることで実現できるはずです。

どちらの設定もコンソールに出力するようなオプションは無いので、カスタムの`AccessLogValve`をつくらないと実現できないのかもしれません(前述のようなトリッキーや方法を使わないのであれば)。


CC BY-SA 3.0
2017-08-07T07:41:56.387
36994
2017-08-07T07:41:56.387
21092
36989
answer