从ASP.NET Web应用程序

时间:2015-09-22 13:44:21

标签: javascript asp.net iis activex logparser

我正在尝试创建一个可以读取用户提供的某些文件(日志)的Web应用程序,然后使用microsoft的LogParser 2.2 exe来解析日志并提供所请求的输出。

我的想法是运行Users系统中存在的Local LogParser.exe,然后使用相同的生成输出来准备我的输出。

我不知道这种方法是否正确,但我正在尝试做同样的事情我的代码没有被正确遵循,我无法找到任何输出/错误。

我的代码段如下:

 protected void Button2_Click(object sender, EventArgs e)
    {
        try
        {
            string fileName = @"C:\Program Files (x86)\Log Parser 2.2\LOGPARSER.exe";
            string filename = "LogParser";
            string input = " -i:IISW3C ";
            string query = " Select top 10 cs-ur-stem, count(cs-ur-stem) from " + TextBox1.Text + " group by cs-uri-stem order by count(cs-ur-stem)";
            string output = " -o:DATAGRID ";
            string argument = filename + input + query + output;
            ProcessStartInfo PSI = new ProcessStartInfo(fileName)
                {
                    UseShellExecute = false,
                    Arguments = argument,
                    RedirectStandardInput = true,
                    RedirectStandardOutput = true,
                    CreateNoWindow = false
                };
            Process LogParser = Process.Start(PSI);
            LogParser.Start();
        }
        catch (Exception Prc)
        {
            MessageBox.Show(Prc.Message);
        }

我可能做错了什么,但是有人能指出我正确的方向吗? Javascript ActiveX控件可能是前进的方向吗?

感谢所有帮助

((我将其作为我的组织的内部应用程序,并假设日志解析器将出现在正在使用此Web应用程序的计算机中)0

由于

拉​​维

1 个答案:

答案 0 :(得分:0)

在项目中添加对Interop.MSUtil的引用,然后按帮助文件中的说明使用COM API。以下using语句应允许您通过代码与LogParser进行交互:

使用LogQuery = Interop.MSUtil.LogQueryClass; 使用FileLogInputFormat = Interop.MSUtil.COMTextLineInputContextClass;

然后你可以做类似的事情:

var inputFormat = new FileLogInputFormat();

// Instantiate the LogQuery object
LogQuery oLogQuery = new LogQuery();

var results = oLogQuery.Execute(yourQuery, inputFormat);

您可以访问一系列预定义的输入格式和输出格式(如IIS和W3C)),因此您可以选择最适合您需求的格式和输出格式。此外,如果尚未安装LogParser,则需要在正在执行的计算机上的LogParser.dll上运行regsvr。该文档实际上非常适合您入门。