【問題解決】Tomcat：「Java Options」の改行以降の設定は反映されない


# 環境
* Tomcat 8.5
* Windows10
* Java8

# 実現したいこと
GCログを出力したいです。
TomcatのJava Optionsに、GCログを出力する設定を定義します。
Java Optionsの設定は、`tomcat8w.exe`を開き、「Javaタブ→Java Options」で行います。

![image](https://qiita-image-store.s3.amazonaws.com/0/37903/b408af25-1a0f-70ca-10d1-c4a3810adeb8.png)

# 問題
Tomcatの「Java Options」に、GCログを出力するオプションを追記しました。
このとき、もともと設定されていたオプションと区別するため、改行を入れてしましました。


```txt:JavaOptions
-Dcatalina.home=C:\Program Files\Apache Software Foundation\Tomcat 8.5
-Dcatalina.base=C:\Program Files\Apache Software Foundation\Tomcat 8.5
-Djava.io.tmpdir=C:\Program Files\Apache Software Foundation\Tomcat 8.5\temp
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file=C:\Program Files\Apache Software Foundation\Tomcat 8.5\conf\logging.properties

-verbose:gc
-Xloggc:/tmp/gclog_%t_%p.txt
```

![image](https://qiita-image-store.s3.amazonaws.com/0/37903/05978902-ce26-b37a-7fef-27ebeae9f762.png)

「適用」ボタンを押して、Tomcatを再起動（stopボタンを押した後、startボタンを押す）しましたが、`/tmp`フォルダにGCログはありませんでした。
また、tomcat8w.exeを閉じて再度開いたところ、Java OptionsからGCログの設定が消えていました。

# 問題の確認
`C:\Program Files\Apache Software Foundation\Tomcat 8.5\logs`にある`catalina.yyyy-mm-dd.log`を確認しました。
「 Command line argument」の部分は、以下のようになっていました。
※ログを見やすくするため、先頭のタイムスタンプやクラス名を取り除きました。

```txt:catalina.2018-01-01.log
Command line argument: -Dcatalina.home=C:\Program Files\Apache Software Foundation\Tomcat 8.5
Command line argument: -Dcatalina.base=C:\Program Files\Apache Software Foundation\Tomcat 8.5
Command line argument: -Djava.io.tmpdir=C:\Program Files\Apache Software Foundation\Tomcat 8.5\temp
Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
Command line argument: -Djava.util.logging.config.file=C:\Program Files\Apache Software Foundation\Tomcat 8.5\conf\logging.properties
Command line argument: exit
Command line argument: abort
Command line argument: -Xms128m
Command line argument: -Xmx256m
```

`-Djava.util.logging.config.file`の次は、`exit`、`abort`で、GCログの設定はありませんでした。
どうやらJava Optionsに改行があると、そこで終了するようです。

# 解決策
Java Optionsから改行を取り除きました。

```txt:javaoptions
-Dcatalina.home=C:\Program Files\Apache Software Foundation\Tomcat 8.5
-Dcatalina.base=C:\Program Files\Apache Software Foundation\Tomcat 8.5
-Djava.io.tmpdir=C:\Program Files\Apache Software Foundation\Tomcat 8.5\temp
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file=C:\Program Files\Apache Software Foundation\Tomcat 8.5\conf\logging.properties
-verbose:gc
-Xloggc:/tmp/gclog_%t_%p.txt
```

![image](https://qiita-image-store.s3.amazonaws.com/0/37903/ed30097a-0dad-d4a8-400d-00c73a54ef54.png)

```txt:catalina-2018-01-01.log
Command line argument: -Dcatalina.home=C:\Program Files\Apache Software Foundation\Tomcat 8.5
Command line argument: -Dcatalina.base=C:\Program Files\Apache Software Foundation\Tomcat 8.5
Command line argument: -Djava.io.tmpdir=C:\Program Files\Apache Software Foundation\Tomcat 8.5\temp
Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
Command line argument: -Djava.util.logging.config.file=C:\Program Files\Apache Software Foundation\Tomcat 8.5\conf\logging.properties
Command line argument: -verbose:gc
Command line argument: -Xloggc:/tmp/gclog_%t_%p.txt
Command line argument: exit
Command line argument: abort
Command line argument: -Xms128m
Command line argument: -Xmx256m
```

`catalina-yyyy-mm-dd.log`には、GC Logの設定が記載されていました。
そして、`/tmp`フォルダに`gclog_2018-01-01_15-39-23_pid18096.txt`という名前のGCログが出力されました。

# 備考
当たり前なことかもしれませんが、Tomcat設定ダイアログの「適用」ボタンを押さないと、Java Optionの変更が反映されません。
私は、適用ボタンを押し忘れ、「なぜ反映されないんだ」と少し悩みました。

# まとめ
TomcatのJava Optionsに改行を含めない。