You can check out a tool I wrote for logparser. It has a SQL-Like create screen that will give you good query examples you can use.
If you include LogParser in your application be careful about how you deploy it: logparser binaries distribution, you can see I included it separately.
#1 why I'm stuck with EventLog class since EventLogReader is not
supported on Win Server 2003
I suggest you just borrow the code from Visual Log Parser.
#2 it needs to query over multiple servers at once
LogParser is perfect for querying multiple servers & multiple logs. It is very handy viewing all logs combined and sorting by Time or even Grouping by occurrence.
#3 I'm not querying all the event logs, instead I'm querying event
logs in a date range, is there a way to make it faster given that we
only need event logs fall into a range?
Yes, LogParser full on fly's, faster than a speeding train! Here is how you query Evt logs by DateRange:
SELECT Extract_FileName(EventLog) AS EventLog, RecordNumber, TimeGenerated, EventID, EventType, EventTypeName, EventCategoryName, SourceName, ComputerName, Message FROM
\\servername\Application
WHERE TimeWritten > '2011-01-25 12:01:00'
AND TimeWritten < '2012-01-25 12:01:00'
#4 I tried it out and that Log Parser Studio seems only work on log
files, not on local system or remote server.
Log Parser Studio is just a GUI for logparser, it should work, try this raw query (without LP Studio using LogParser directly) to get all logs in your domain:
LogParser "SELECT SourceName,TimeGenerated,TimeWritten,Message INTO filename.csv FROM \\Server\Application where Message Like '%mydomain.com%'" -o:CSV