Skip to content

MS_LogParser

nishi_74322014 edited this page Sep 1, 2026 · 1 revision

LogParser

概要

LogParser の機能は、ログの加工・分析を支援する。

補足(位置づけ): Microsoft 製の無償ツール(Log Parser 2.2)で、
さまざまな形式のログを「表」とみなし、SQL で問い合わせるという
一点に特化している。
最終リリースは 2005 年だが、Windows イベント ログや IIS ログを
その場で集計する用途では現在も使われている。
GUI 版として Log Parser Studio(非公式ツール)もある。

入出力形式

Log Parser 2.2 が扱える主な入出力形式

入力形式 出力形式
IIS W3C 拡張ログ形式 W3C 拡張ログ形式
Microsoft IIS ログ・ファイル形式 SQL Server へのデータ送信
NCSA 共通ログ・ファイル形式 SYSLOG サーバへのデータ送信
集中バイナリ・ログ チャート形式
HTTP エラー・ログ テンプレートを利用した HTML 形式
ODBC ログ XML 形式
FTP ログ・ファイル CSV 形式
SMTP ログ・ファイル タブ区切りテキスト形式
Windows イベント・ログ 汎用的なテキスト形式
Windows レジストリ
Active Directory オブジェクト
ファイルとディレクトリ情報
NetMon.cap キャプチャ・ファイル
拡張または結合された NCSA ログ・ファイル
W3C 拡張ログ形式
ETW(Event Tracing for Windows)トレース
XML 形式
CSV 形式
タブ区切りテキスト形式
汎用的なテキスト形式
独自の入力形式(COM 入力形式の COM+プラグインの作成が必要)

補足(入力の幅が特徴): 入力形式に Windows レジストリ、
Active Directory オブジェクト、ファイルとディレクトリ情報

含まれている点が LogParser の面白いところで、
「ログ」に限らず
C:\ 配下で 100MB を超えるファイルを SQL で探す
といった使い方もできる。

LogParser "SELECT TOP 20 Path, Size FROM C:\*.* ORDER BY Size DESC" -i:FS

出力の「チャート形式」は Office の COM に依存するため、
現在の環境では動かないことが多い。

データ変換や集計

Log Parser には、上記入出力形式を変換するための
専用の SQL 形式エンジン・コアが実装されている。
このため Log Parser を利用したデータ変換や集計では、

  • 一般的な SQL 句(SELECT、WHERE、GROUP BY、HAVING、ORDER BY など)や、
  • 集計関数(SUM、COUNT、AVG、MAX、MIN など)、
  • およびその豊富な関数(TO_STRING、SUBSTR、CASE など)を

利用可能である。

コマンド例

  • 対象

    • System
    • Application
    • Security
  • 抽出時間帯

    • <時間帯フラグ>:対象時間帯
      1. 前日 16 時~当日 0 時未満
      2. 当日 0 時以降~当日 7 時未満
      3. 当日 7 時以降~当日 16 時未満

移行メモ(連番): 元ページでは 3 項目がすべて +++(同一レベル)で
書かれており、すべて「1.」と表示される状態だった。
内容から連番と解して 1.〜3. に整理した。

  • コマンド
    • 前日 16 時~当日 0 時未満

      LogParser
       "SELECT EventLog,TimeGenerated,EventID,EventTypeName,EventCategoryName,SourceName, ComputerName,SID,Message
        INTO 出力PATH + <サーバ名>_<ログ種別ID>_<年月日>_1.log
        FROM System
        WHERE TO_DATE(TimeGenerated) = SUB(TO_TIMESTAMP('引数の<日付>','yyyy/MM/dd'), TIMESTAMP('2','d'))
         AND TO_TIME(TimeGenerated) >= TIMESTAMP('16','h')"
       -i:EVT -o:CSV -q:ON -resolveSIDs:ON
      
    • 当日 0 時以降~当日 7 時未満

      LogParser
       "SELECT EventLog, TimeGenerated, EventID,EventTypeName, EventCategoryName, SourceName, ComputerName, SID, Message
        INTO 出力PATH + <サーバ名>_<ログ種別ID>_<年月日>_1.log
        FROM System
        WHERE TO_DATE(TimeGenerated) = TO_TIMESTAMP('引数の<日付>','yyyy/MM/dd')
         AND TO_TIME(TimeGenerated) < TIMESTAMP('7','h')"
       -i:EVT -o:CSV -q:ON -resolveSIDs:ON
      
    • 当日 7 時以降~当日 16 時未満

      LogParser
       "Select EventLog, TimeGenerated, EventID, EventTypeName, EventCategoryName, SourceName, ComputerName, SID, Message
        INTO 出力PATH + <サーバ名>_<ログ種別ID>_<年月日>_1.log
        FROM System
        WHERE TO_DATE(TimeGenerated) = TO_TIMESTAMP('引数の<日付>','yyyy/MM/dd')
         AND TO_TIME(TimeGenerated) >= TIMESTAMP('7','h')
         AND TO_TIME(TimeGenerated) < TIMESTAMP('16','h')"
       -i:EVT -o:CSV -q:ON -resolveSIDs:ON
      

      From System の部分は、From ApplicationFrom Security にも対応
      ※ 日付の部分は、引数の値に変更する。

補足(オプションの意味): 上記コマンドのオプションは次のとおり。

オプション 意味
-i:EVT 入力形式(EVT = Windows イベント ログ)
-o:CSV 出力形式
-q:ON Quiet モード(進捗表示を抑止。バッチ向け)
-resolveSIDs:ON SID をアカウント名に解決する

-resolveSIDs:ON はドメイン コントローラへの問い合わせが発生するため、
大量のログを処理すると極端に遅くなることがある。
事後解析であれば SID のまま出力し、
必要な分だけ後から解決する方が速い。

なお、出力先の 3 つのコマンドがいずれも _1.log で終わっているが、
時間帯ごとにファイルを分ける意図であれば
_2.log / _3.log とすべきで、元ページのままでは上書きされる。

参考

本 Wiki 内


Tags: Windows, 障害対応, 性能, デバッグ, テスト, ツール類

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally