LogParser, event logs and Longhorn Server
I am a frequent user of LogParser and when I recently started using Windows Server 2008 beta as my desktop OS I ran into a problem with it. One of the things I use LogParser for is extracting the information I need from my customers' event logs which are often quite large and usually from Windows Server 2003. So I got a surprise when I first tried to do this on Longhorn:
Logparser -i:EVT "select * from application.evt"
Task aborted.
Cannot open <from-entity>: Error opening event log "\?D:customerApplication.evt": The event log file is corrupted.
Statistics:
-----------
Elements processed: 0
Elements output: 0
Execution time: 0.11 seconds
Fortunately when I posted this problem to an internal group Neil Carpenter came back with a solution that had worked for him on Vista which he has also blogged about. This also worked on Longhorn (makes sense - similar code base / /API).
I was curious to understand the underlying reason though. A bit of debugging case some light on it. Turned out that when LogParser was calling OpenBackupEventLog it was failing with an error saying the event log was corrupt. The documentation for OpenBackupEventLog states that it will open a handle to a backup event log created by BackupEventLog. As the event log format has changed significantly in Vista and Longhorn compared to previous OSes (warranting a new file extension of 'EVTX') it is no surprise the OpenBackupEventLog has a problem with backup event logs from older versions of Windows
So, if you are working with LogParser on a Vista or Longhorn system to parse event logs from a previous version of Windows, you first need to convert the event log to EVTX format:
wevtutil export-log application.evt application.evtx /lf
LogParser will then work happily with the EVTX file as input. Just specify -i:EVT on the LogParser command line as before.
Cheers
Doug
Comments
Anonymous
August 31, 2007
PingBack from http://msdnrss.thecoderblogs.com/2007/08/31/logparser-event-logs-and-longhorn-server/Anonymous
February 01, 2010
Is it possible to convert an .evtx file to .evt file format?Anonymous
February 01, 2010
To the best of my knowledge no. Is there a scenario where this would be useful for you?Anonymous
February 07, 2010
I need to parse evtx log file from XPAnonymous
June 11, 2010
I need to do the same thing. Our customers are sending us EVTX files from Win Svr 2008 and we are unable to view them on our ancient XP and Svr 2003 boxes. Yep, I know, our cheap company won't spring for 2008 licenses for us and our clients won't save the files to EVT before they send them to us. ThanksAnonymous
June 23, 2010
Unfortunately I don't think there is a way to convert EVTX to any other format if you do not have a Vista or above system. One way to encourage your customers to provide data in a readable format would be to give them a more automated solution for data gathering. One option for doing that would be to get them to use Microsoft MPSReports: www.microsoft.com/.../details.aspx This will automatically gather lots of information about there system including event logs in EVTX, CSV and TXT formats and bundle it into a single CAB file that they can upload to you (although it could be too big to email). But in all, getting all that information up front may allow you to solve their problem quicker. DougAnonymous
June 24, 2011
I have a problem and I want to task schedule to make me the file. evtx to. xml but not e able to program, you have another way to make the task more automatic and not beyond to give me the file conviarta the format I want. I appreciate your knowledgeAnonymous
June 26, 2011
You can use LogParser to generate the event log output in XML (you can also save as XML from the event viewer GUI): logparser /i:EVT /o:XML "select * into test.xml from Application" This would take it directly from the Application event log and output into test.xml You can also convert an EVTX to XML like this: logparser /i:EVT /o:XML "select * into test2.xml from application.evtx" (note that when you are running logparser on Vista or above, specifying the /i:EVT switch actually means that logparser will interpret EVTX, not EVT, files because logparser uses the OS APIs to read the files). You can place these commands in a CMD/BAT file and then schedule that using the AT command, task scheduler or other sceduling tool. HTH Doug