I would start with testing whether or not using the EventLog would solve my problem. EventLog messages contain a lot of information and you can add your own.
For some diagnostics I'd have a look at (custom) Performance Counters. My bet is that it is hard to create something that beats the performance of the windows Performance Counters.
Writing this all over again might not be worth it.
It might be required to create special filters in the event viewer to get the output you are looking for or to gather event across computers (you might even write your own viewer)