ログタイムスタンプ統一(syslog/Apache対応)

syslog・Apache/nginx・ISO 8601・エポック秒など形式の異なるログ行から日時を自動検出し、指定タイムゾーンのISO 8601に統一表示します。複数ファイルのログ行を時系列にマージする機能つき。年の無いsyslogは今年と仮定します。

タイムスタンプの検出・統一表示


複数ファイルのマージ(時系列ソート)

最大3ファイル分のログを貼り付けると、検出したタイムスタンプ順にすべての行をマージします。タイムスタンプの無い行(スタックトレースなど)は直前の行に続けて扱われます。

年を含まないsyslog形式(Sep 10 15:04:05)は、今年(年)として解釈します。タイムゾーンのオフセットを含まない日時(syslogや一部のISO 8601・エポック秒以外)は、上で選択したタイムゾーンの時刻とみなして計算します。

使い方

  1. 「タイムスタンプの検出・統一表示」欄に、形式の異なるログ行(syslog・Apache/nginx・ISO 8601・JSONログなど)をまとめて貼り付けます。
  2. 統一後のタイムゾーンと出力モード(行頭にISO 8601を付加/検出した日時で並べ替え)を選び、結果を確認します。
  3. 複数ファイルのログを時系列でまとめたい場合は、下の「複数ファイルのマージ」欄にファイルA・B(・C)としてそれぞれ貼り付けると、検出した日時順にすべての行がマージされます。

仕組み・根拠

ログのタイムスタンプ形式は出力元のソフトウェアによって様々です。本ツールは代表的な4形式を正規表現で検出します。syslogの標準形式(RFC 3164)であるMmm dd hh:mm:ss(例: Sep 10 15:04:05)には年もタイムゾーンも含まれないため、年は実行時点の年、時刻は指定したタイムゾーンの壁時計時刻とみなして解釈します。Apache/nginxのCommon Log Format・Combined Log Formatで使われる[dd/Mmm/yyyy:hh:mm:ss +hhmm]形式は、末尾のオフセット(+0900など)をそのまま使用するため、ログサーバーのタイムゾーン設定に依存せず正確に解釈できます。ISO 8601形式(yyyy-mm-ddThh:mm:ss、オフセットやZの有無を問わない)は、JSON形式のログでよく使われる"timestamp":"..."のような値の中に埋め込まれていても検出します。オフセットが明示されていない日時(syslogや、オフセットなしのISO 8601など)は、指定したタイムゾーンの時刻として扱うという単純化を行っている点に注意してください。

現場の落とし穴: syslogの日時に年が含まれないのは仕様上の制約で、ログローテーションが遅れて年をまたいだファイル(例えば12月のログを1月に処理する場合)を扱うと、「今年」と仮定する本ツールの変換結果が実際の記録年とずれることがあります。年をまたぐ可能性があるログを扱う際は、ファイルの更新日時など別の手がかりで年を確認してください。また、複数ファイルのマージ機能では、タイムスタンプを持たない行(スタックトレースなど)を直前の行に続く行として扱いますが、ファイルの先頭にタイムスタンプの無い行が続く場合は、便宜上「最も古い」行として先頭にまとめて出力される点にも留意してください。

よくある質問

Q. 複数の形式が1つのログファイルに混在していても大丈夫ですか?

A. 大丈夫です。1行ごとに独立して形式を判定するため、systemdのjournalとアプリケーションログが混在するような場合でも、行ごとに正しい形式で検出を試みます。

Q. タイムゾーンのオフセットが付いている行はどう扱われますか?

A. Apache/nginx形式やオフセット付きのISO 8601形式(例: +09:00、Z)は、その行自体が持つオフセットを優先して使用します。選択したタイムゾーンは、あくまでオフセット情報が無い行の解釈と、統一後の表示形式に使われます。

Q. マージできるファイル数に制限はありますか?

A. 本ツールでは3ファイルまでの入力欄を用意しています。それ以上をまとめたい場合は、あらかじめ手元でファイルを連結してから貼り付けてください。

関連ツール

最終更新・根拠の確認日: 2026-09-10 · カテゴリ: Linux・サーバー