ログから HTML ベースのシーケンス図を生成する PHP ツールです。
start / return / end 形式のログを解析し、関数呼び出しの流れをブラウザ上でたためるシーケンス表示に変換します。
- フロント画面は
index.phpです - 実際の変換処理は
mklog2seq.phpが担当します - 初期表示時に
log.txtheader.txtfooter.txtgroup.txtをフォームへ読み込みます - 生成結果は別ファイルへ保存せず、そのまま HTML をレスポンスとして返します
- アクセス数を
count.txtに加算します
- 開始ログと終了ログから関数の入れ子構造を可視化
- ファイル名または関数名ベースでグループ分け
- タスク単位での分離表示
- API として扱いたい関数名の強調
- 生成後 HTML 上での折りたたみ表示
index.php には次の入力欄があります。
username: 出力に付与するユーザー名title: シーケンス図タイトルlog: 解析対象ログheader: 出力 HTML の先頭テンプレートfooter: 出力 HTML の末尾テンプレートgroup: グループ定義pickup: 特定関数以降だけを解析したい場合のトリガーapi: 強調表示したい関数名
- PHP が動作する Web サーバー
count.txtへの書き込み権限- ブラウザ
依存ライブラリは同梱の jquery.min.js のみです。
PHP のビルトインサーバーで動かす場合:
php -S 127.0.0.1:8000起動後に http://127.0.0.1:8000/index.php を開きます。
公開環境での動作確認先:
https://www.mics-soft.jp/autolog/mklog2seq/
index.phpを開くlogに解析したいログを貼り付ける- 必要なら
headerfootergrouppickupapiを調整する 出力するを押す- 生成された HTML シーケンス図をブラウザで確認する
開始ログ:
ファイル名:行番号:関数名(引数) start
終了ログ:
ファイル名:行番号:関数名 return
ファイル名:行番号:関数名 return(戻り値)
ファイル名:行番号:関数名 end
実装上は block-start block-end break にも対応しています。
[autolog] で始まるログ行については、mklog2seq.php 内の専用パーサで先頭ヘッダを優先して解析します。
それ以外のログ形式は、従来どおり group.txt の @func_start / @func_return などの正規表現定義を使って解析します。
group.txt では、ログの正規表現とグループ分け方法を指定できます。
主な指定:
@func_start=...: 開始ログの正規表現@func_start_def=...: 正規表現の各キャプチャをどの項目として使うか@func_return=...: 終了ログの正規表現@func_return_def=...: 終了ログ側の項目定義@file: ファイル名ベースでグループ分け@func: 関数名ベースでグループ分け@group=正規表現,番号,表示名: グループ定義@task=正規表現: タスク抽出@end: 定義終端
同梱の group.txt には複数のサンプルが入っています。
header.txt: 生成 HTML の<head>相当。CSS と jQuery を含みますfooter.txt: 生成 HTML の末尾log.txt: サンプルログgroup.txt: ログ解析とグループ分けの定義
生成後の画面では以下の操作ができます。
- 関数名クリック: 子呼び出しの折りたたみ
- タスク名クリック: タスク単位の表示切替
- グループ名クリック: グループ単位の表示切替
- 関数のツールチップ: 元ログの行情報表示
- 大きいログは処理時間が長くなり、サーバー設定次第でタイムアウトする可能性があります
mklog2seq.phpはアクセス時にcount.txtを更新するため、読み取り専用環境では失敗します- 現状の実装では
mklog2seq.php側の POST 受け取り名がgrouopになっており、画面のgroup入力が反映されない可能性があります - エラー処理関数
error()は実質未実装のため、異常系は HTML 上の警告表示が中心です
index.php: 入力フォームと紹介ページmklog2seq.php: ログ解析と HTML 生成本体header.txt: 出力ヘッダーfooter.txt: 出力フッターgroup.txt: グループ定義とログ形式定義log.txt: サンプルログcount.txt: アクセスカウンタスクリーンショット.jpg: 入力画面例出力例.jpg: 出力イメージ
Logs can be automatically generated by AutologInsert:
https://github.com/micssoftmsfactory/AutologInsert
This project is licensed under the MIT License. See LICENSE.
Bundled third-party code:
jquery.min.js: jQuery v3.7.1, distributed under its own license

