Logparser无法在C#中工作

时间:2013-01-10 03:42:39

标签: c# logparser

解析查询时出错:指定的FROM-ENTITY“< 1>”无效[文件名,目录名或卷标语法不正确。]

<1>在Log Parser 2.2中的sql中使用时,该文件夹存在。 如果我关注文章 - LogParser DataProvider for ADO.NE

,则查询有效
        try
        {
            ILogRecord rowLP = null;
            ILogRecordset rsLP = null;

            LogQueryClass logQuery = new LogQueryClass();
            COMW3CInputContextClass comW3CInputContext = new COMW3CInputContextClass();

            string strSQL = @"SELECT " +
                         @"COUNT(*) AS [Requests], " +
                         @"DIV(DIV(SUM(cs-bytes), 1024), 1024) AS [MBytes received], " +
                         @"DIV(DIV(SUM(sc-bytes), 1024), 1024) AS [MBytes sent], " +
                         @"c-ip AS [IP Address], cs(User-Agent) AS [User agent], " +
                         @"MAX(date) AS [Last visit] " +
                         @"FROM <1> " +
                         @"GROUP BY [IP Address], [User agent] " +
                         @"ORDER BY [Requests] DESC";


            // run the query against W3C log
            rsLP = logQuery.Execute(strSQL, comW3CInputContext);
            rowLP = rsLP.getRecord();


        }
        catch (System.Runtime.InteropServices.COMException exc)
        {
            Console.WriteLine("Unexpected error: " + exc.Message);
        }

2 个答案:

答案 0 :(得分:1)

&lt; 1&gt; “魔术快捷方式”仅适用于 IISW3C 输入格式,该格式是解析IIS生成的W3C日志文件的格式。在您的代码中,您使用的是 W3C 输入格式,该格式解析通用的W3C格式的日志,因此对&lt; 1&gt; 一无所知。

答案 1 :(得分:0)

我发现他们没有工作,请按照http://www.codeproject.com/Articles/13504/Simple-log-parsing-using-MS-Log-Parser-2-2-in-C-NE

COMW3CInputContextClass comW3CInputContext = new COMW3CInputContextClass();
rsLP = logQuery.Execute(strSQL, comW3CInputContext);

通过进行如下更改,查询可以正常工作

rsLP = logQuery.Execute(strSQL, null);