Log Parser 2.2

| | コメント(0) | トラックバック(0)

ログファイル、XMLファイル、CSVファイルのようなテキストベースのデータや、エベントログ、レジストリー、ファイルシステム、アクティブディレクトリのデータを、条件を指定して抽出するツール。

今まで、Log Parser 2.1を使っていましたが、Log Parser 2.2が出ていたので、ちょっと使ってみました。

SEE:
IIS 6.0 Resource Kit Tools (このblogより)

・ScriptCenter Tools: Log Parser 2.2
http://www.microsoft.com/technet/scriptcenter/tools/logparser/default.mspx

・Download details: Log Parser 2.2
http://www.microsoft.com/downloads/details.aspx?familyid=890cd06b-abf8-4c25-91b2-f8d975cf8c07&\1displaylang=en

2005/05/04 現在のバージョンは、2.2.10。
前見たときは2.2.9だったので、時々マイナーバージョンアップしてるみたい。

(2005/05/17/ 追記 ここから)
・ダウンロードの詳細 : Log Parser 2.2 日本語版
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=890cd06b-abf8-4c25-91b2-f8d975cf8c07
日本語版が公開されたようです。(2005/05/12 : 2.2.10)
ヘルプはサンプルが日本語になっています。
(2005/05/17/ 追記 ここまで)

デフォルトのインストール先は「C:\Program Files\Log Parser 2.2\」です。

追加されたフォーマット

● 追加された入力フォーマット

TSV, XML, ETW, NETMON, REG, ADS, COM

● 追加された出力フォーマット

TSV, CHART, SYSLOG, NEUROVIEW

こんな感じかな?

SQLファイル内で変数

SQLファイル内で変数が使えるようになりました。
1つのSQLファイルを変更しないで使いまわせるようになったので、良いかも。

C:\> LogParser file:LogonFailureStats.sql?machine=MyMachineName

とすると、「LogonFailureStats.sql」内の「%machine%」が「MyMachineName」と置き換えられます。

変数が2つ必要な時は、「+」で区切るっぽい。
(HTTPのQueryStringのように)「&」じゃないので、間違えないように。

C:\> LogParser file:filename.sql?var1=value1+var2=value2

■ -queryInfo オプション

バージョン2.2で追加されたオプション。
クエリーを実行しないで、コマンドの診断情報を表示します。

クエリー、入出力フォーマット、フィールド名などが表示されます。

例えば、イベントログのシステムログを表示させる時の診断情報はこんな感じ。

C:\> LogParser -i:EVT -o:NAT "SELECT * FROM System" -queryInfo
 
Query:
 SELECT [EventLog], [RecordNumber], [TimeGenerated], [TimeWritten],
 [EventID], [EventType], [EventTypeName], [EventCategory],
 [EventCategoryName], [SourceName], [Strings], [ComputerName], [SID],
 [Message], [Data]
 FROM System
 
Formats selected:
 Input format:  EVT (Windows Event Log)
 Output format: NAT (Native Format)
 
Query fields:
  EventLog (S)              RecordNumber (I)          TimeGenerated (T)
  TimeWritten (T)           EventID (I)               EventType (I)
  EventTypeName (S)         EventCategory (I)         EventCategoryName (S)
  SourceName (S)            Strings (S)               ComputerName (S)
  SID (S)                   Message (S)               Data (S)

■ -e オプション

指定したパースエラーの最大数(数字部分)まで、abortしないで実行します。

「-e:10」などとすると、エラーの内容を表示してくれます。
どのログファイルの何行目でエラーが出たか分かります。

■ 「Error decoding MBCS characters」のエラー

Log Parser 2.1 では、ログの中にマルチバイト文字セットがあると、途中でabortしていました。

SEE:
IIS 6.0 Resource Kit Toolsの『「Error decoding MBCS characters」のエラー』の項目 (このblogより)

Log Parser 2.2 では、このエラーが出なくなったようです。
マルチバイトをそのまま出力するようです。

バッチファイル

● W3C拡張ログをApacheのcombinedの形式に変換する

SQLファイル内で変数を使えるようになったり、うまく動かなかったりしたので、2.1版から修正しました。

・w3c2clf.bat (Log Parser 2.2用)

@ECHO OFF
REM 
REM 変更する個所
REM   LOGFILENAME : 解析するIISのログファイル
REM   REVERSEDNS  : IPアドレスをホスト名に変換するとき「1」にする。
REM 
ECHO 処理中...
 
SET LOG_DIR="IISのログファイルのあるディレクトリパス"
SET EXE_DIR="Log Parserの実行ファイルのあるディレクトリパス"
SET SQL_DIR="bot_google.sqlファイルのあるディレクトリパス"
SET OUT_DIR="結果出力先のディレクトリパス"
 
CD %LOG_DIR%
REM %EXE_DIR%\LogParser.exe -stats:OFF -o:DATAGRID file:%SQL_DIR%\w3c2clf.sql?LOGFILENAME=ex0505*.log+REVERSEDNS=0 > %OUT_DIR%\clf.log
%EXE_DIR%\LogParser.exe -stats:OFF -o:NAT -rtp:-1 -headers:OFF -spacecol:OFF file:%SQL_DIR%\w3c2clf.sql?LOGFILENAME=ex0505*.log+REVERSEDNS=0 > %OUT_DIR%\clf.log

・w3c2clf.sql (Log Parser 2.2用)

SELECT
  CASE %REVERSEDNS%
    WHEN 1 THEN REVERSEDNS(c-ip)
    ELSE c-ip
  END ,
  '-',
  cs-username,
  STRCAT('[', 
    STRCAT(
      REPLACE_STR(
      REPLACE_STR(
      REPLACE_STR(
      REPLACE_STR(
      REPLACE_STR(
      REPLACE_STR(
      REPLACE_STR(
      REPLACE_STR(
      REPLACE_STR(
      REPLACE_STR(
      REPLACE_STR(
      REPLACE_STR(TO_STRING(date, 'dd/MM/yyyy'),
      '/12/', '/Dec/'),
      '/11/', '/Nov/'),
      '/10/', '/Oct/'),
      '/09/', '/Sep/'),
      '/08/', '/Aug/'),
      '/07/', '/Jul/'),
      '/06/', '/Jun/'),
      '/05/', '/May/'),
      '/04/', '/Apr/'),
      '/03/', '/Mar/'),
      '/02/', '/Feb/'),
      '/01/', '/Jan/'),
      STRCAT(':', STRCAT(TO_STRING(time, 'HH:mm:ss'), ' +0000]')))),
  STRCAT('"',
    STRCAT(cs-method,
      STRCAT(' ',
        STRCAT(cs-uri-stem,
          STRCAT('?',
            STRCAT(cs-uri-query,
              STRCAT(' ',
                STRCAT(cs-version, '"')))))))),
  sc-status,
  sc-bytes,
  STRCAT('"', STRCAT(REPLACE_IF_NULL(cs(Referer),'-'), '"')),
  STRCAT('"', STRCAT(REPLACE_IF_NULL(cs(User-Agent),'-'), '"'))
FROM %LOGFILENAME%

日付部分は、(新しい関数が追加されたりして)2.2ではうまく変換できるかもしれないけど、調べてません(2.1の時は上記のようにしないとうまく変換できなかった)。
いい方法があったら、教えてください。

トラックバック(0)

このブログ記事を参照しているブログ一覧: Log Parser 2.2

このブログ記事に対するトラックバックURL: http://kinshachi.ddo.jp/mt/mt-tb.cgi/393

コメントする


画像の中に見える文字を入力してください。

このブログ記事について

このページは、ikeが2005年5月 4日 11:02に書いたブログ記事です。

ひとつ前のブログ記事は「PhishWall」です。

次のブログ記事は「DVDINFO pro」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

最近のコメント

Powered by Movable Type 4.261