我正在尝试创建一个可以读取用户提供的某些文件(日志)的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
由于
拉维
答案 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。该文档实际上非常适合您入门。