3. I know about Win32::Eventlog but that only gets the logs that are currently in the event viewer.
No it doesn't. You can configure Win32::Eventlog
to read in your backed up event log files, too. Here's the relevent snippet from the POD:
The new() method creates a new EventLog object and returns a handle to it. This hande is then used to call the methods below.
The method is overloaded in that if the supplied SOURCENAME argument contains one or more literal '\' characters (an illegal character in a SOURCENAME), it assumes that you are trying to open a backup eventlog and uses SOURCENAME as the backup eventlog to open. Note that when opening a backup eventlog, the SERVERNAME argument is ignored (as it is in the underlying Win32 API). For EventLogs on remote machines, the SOURCENAME parameter must therefore be specified as a UNC path.