質問するログイン新規登録
Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Q&A

解決済

1回答

290閲覧

Windows版のTomcat commons-daemonログの自動ローテションをさせない方法

namamaru

総合スコア7

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

0グッド

0クリップ

投稿2025/07/14 23:39

0

0

実現したいこと

Windows上でTomcat9を構築しています。
~/bin/tomcat9w.exe よりGUIを立ち上げ、"Logging"タブから、commons-daemonログのpathやファイル名を任意に指定できます。
このログは、Tomcatの起動・停止時のログをだすもので、そのたびに、ファイルの末尾に日付(yyyy-mm-dd)が付与され、ファイルが分かれてしまいます。
実現したいことは、起動・停止のたびにファイルを分離せず、1つのログファイルのままにしたいのですが、実現する方法はありますでしょうか。

発生している問題・分からないこと

commons-daemonログを監視対象にしたく、ログのファイル名に異なるタイムスタンプが付与され、分離されるのを防ぎたいためとなります。

該当のソースコード

特になし

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

今のところ、net上では情報がみあたりませんでした。

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jimbe

2025/07/15 17:42

conf/logging.properties はどのような内容となっているでしょうか。 質問を編集して追加提示頂けますか?
namamaru

2025/07/16 00:32

ご連絡ありがとうございます。 logging.ptropertiesは、余計なログをはかないよう以下の箇所はすべてコメント化(先頭#)しています。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1catalina.org.apache.juli.AsyncFileHandler.level = FINE 1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs 1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina. 1catalina.org.apache.juli.AsyncFileHandler.maxDays = 90 1catalina.org.apache.juli.AsyncFileHandler.encoding = UTF-8 2localhost.org.apache.juli.AsyncFileHandler.level = FINE 2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs 2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost. 2localhost.org.apache.juli.AsyncFileHandler.maxDays = 90 2localhost.org.apache.juli.AsyncFileHandler.encoding = UTF-8 3manager.org.apache.juli.AsyncFileHandler.level = FINE 3manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs 3manager.org.apache.juli.AsyncFileHandler.prefix = manager. 3manager.org.apache.juli.AsyncFileHandler.maxDays = 90 3manager.org.apache.juli.AsyncFileHandler.encoding = UTF-8 4host-manager.org.apache.juli.AsyncFileHandler.level = FINE 4host-manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs 4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager. 4host-manager.org.apache.juli.AsyncFileHandler.maxDays = 90 4host-manager.org.apache.juli.AsyncFileHandler.encoding = UTF-8 : org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.AsyncFileHandler org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.AsyncFileHandler org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.AsyncFileHandler ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ またアクセスログはserver.xml側でコメント化しており、出力しないようにしています。 Tomcatのwindows版 (公式サイトで入手 apache-tomcat-9.0.93-windows-x64.zip) では、以下の3つのログをだします。 (1) tomcat9-stdout.YYYY-MM-DD.log (2) tomcat9-stderr.YYYY-MM-DD.log (3) commons-deamon.YYYY-MM-DD.log これらの設定は、bin/tomcat9w.exe(GUI)より Loggingタブで設定しています。 (1)と(2)は、Redirectの部分をautoから、フルパスで指定すればログは固定化されローテトされなくなります。 (3)についてはその方法がみつからず・・というのが今回の質問の主旨となります。 ※普段はLinuxを使用しますので、このような課題はありません。今回はじめてWindowsでtomcatを構築し、catalinaではなく上記のようなログを出力することを知りました。
namamaru

2025/07/16 00:37

ご連絡ありがとうございます。 urの内容は、logging.propertiesで制御できるログのことかと判断しております。 Linux版だとそれでよいのですが、Windowsの場合のみに出力される "commons-deamon.YYYY-MM-DD.log"は、logging.propertiesでは制御できないのでは? との考えです。
guest

回答1

0

ベストアンサー

commons-daemon-1.4.1 のソースを確認しました。
native\windows\src\log.cから関連部分を抜粋

C

1//前略 2#define LOGF_EXT L".%04d-%02d-%02d.log" 3#define LOGF_EXR L".%04d-%02d-%02d.%02d%02d%02d.log" 4//中略 5static void logRotate(apx_logfile_st *lf, LPSYSTEMTIME t) 6{ 7//中略 8 if (lf->dwRotate < 86400) 9 StringCchPrintf(sName, 10 SIZ_PATHLEN, 11 L"\\%s" LOGF_EXR, 12 lf->szPrefix, 13 lf->sysTime.wYear, 14 lf->sysTime.wMonth, 15 lf->sysTime.wDay, 16 lf->sysTime.wHour, 17 lf->sysTime.wMinute, 18 lf->sysTime.wSecond); 19 else 20 StringCchPrintf(sName, 21 SIZ_PATHLEN, 22 L"\\%s" LOGF_EXT, 23 lf->szPrefix, 24 lf->sysTime.wYear, 25 lf->sysTime.wMonth, 26 lf->sysTime.wDay); 27 lstrlcpyW(lf->szFile, MAX_PATH, lf->szPath); 28 lstrlcatW(lf->szFile, MAX_PATH, sName); 29 h = CreateFileW(lf->szFile, 30 GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, 31 NULL, 32 OPEN_ALWAYS, 33 FILE_ATTRIBUTE_NORMAL | FILE_FLAG_WRITE_THROUGH | FILE_FLAG_SEQUENTIAL_SCAN, 34 NULL); 35//後略

設定では回避できないように見えます

投稿2025/07/16 01:58

YT0014

総合スコア1832

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2025/07/16 02:22

> 設定では回避できないように見えます 私も同意見です。commons-daemonとtomcat9(Windowsサービスのランチャーとしてのtomcat9.exe)のドキュメントにも、それを示唆する記載がありますね。 https://commons.apache.org/proper/commons-daemon/procrun.html https://tomcat.apache.org/tomcat-9.0-doc/windows-service-howto.html > --LogPrefix commons-daemon Defines the service log filename prefix. The log file is created in the LogPath directory with .YEAR-MONTH-DAY.log suffix
namamaru

2025/07/16 08:52

ご回答いただきありがとうございました。 ハードコーティングされていることから、仕様(設定では変更不可)と理解しました。 大変助けになりました、誠にありがとうございます。 
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問