WindowsでApacheTomcatに対してJavaアプリケーションを実行しています。このアプリケーションを実行するには、Windowsサービスとして実行する方法と、バッチファイルからTomcatを手動で呼び出す方法の2つがあります。
バッチファイルを介してアプリケーションを起動するときは、以下を使用してGCログをJVMパラメーターに追加します。
-Xloggc=%~dp0..\logs\gc-%DATE:~-4%.%DATE:~4,2%.%DATE:~7,2%_%TIME:~0,2%.%TIME:~3,2%.%TIME:~6,2%.log
これにより、ファイル名に日付が含まれるGCログが出力されますが、サービスとして実行するDATE
と、TIME
変数と変数が正しく解決されません。
Windowsサービスを使用する場合、日付と時刻がGCログに確実に追加されるようにするには、JVMパラメーターでどの変数を使用する必要がありますか?
私はそれを単純化しようとしました- gc-%DATE%.log, gc-${DATE}.log
、すべての場合において、変数は解決されません。
どんな助けでも大歓迎です!
編集:アプリケーションをWindowsサービスとして実行する場合は、すべてのソリューションが機能する必要があることに注意してください。スタンドアロンでも問題ありません。それはカバーされています。これは、Windowsサービスが使用されている場合のみです。
編集-WindowsサービスとしてのTomcatの使用
ドキュメントを使用して、TomcatをWindowsサービスとしてインストールしました。
次に、Tomcatのbinディレクトリから次のコマンドラインを実行しました。
"tomcat7.exe" //US//Tomcat7 ++JvmOptions=-Xloggc:gc-%DATE:~-4%.%DATE:~4,2%.%DATE:~7,2%_%TIME:~0,2%.%TIME:~3,2%.%TIME:~6,2%.log
注://US
はサービスの更新コマンドです。Tomcat7
サービスの名前です。
次に、サービスを再起動すると、ログパスが正しく解決されます。
既存のディレクトリがある場合は機能するはずです。日付を含む式では、という名前のディレクトリがgc-2015.1
必要であり、という名前のファイルが作成されます.01_13.43.35.log
(2015年1月15日の13時間43分35秒の場合)
catalina.batを使用している場合
なぜそれが機能しないのですか?拡張が遅れるという問題があるからです。
を使用setlocal ENABLEDELAYEDEXPANSION
して遅延拡張を有効にする必要がありますcatalina.bat
その後、交換してください%
と!
。で終わり-Xloggc="!~dp0..\logs\gc-!DATE:~-4!.!DATE:~4,2!.!DATE:~7,2!_!TIME:~0,2!.!TIME:~3,2!.!TIME:~6,2!.log"
ます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加