after I did some research what I was after is :
public class EventViewer()
{
EventLog _eventlog;
public void createandreferenceEventViewer(string sLogNameTrimmed)
{
//Creates or reference the default Event Viewer
if (!EventLog.SourceExists(sLogNameTrimmed))
{
EventLog.CreateEventSource(sLogNameTrimmed, sLogNameTrimmed);
Thread.Sleep(500); // Event viewer need latency to allow being written
}
// Connect to the newly created / existing Log
_eventlog = new EventLog(sLogNameTrimmed);
_eventlog.Source = sLogNameTrimmed;
_eventlog.EntryWritten += WrittenEntryEventHandler;
_eventlog.EnableRaisingEvents = true;
}
void WrittenEntryEventHandler(object source, EntryWrittenEventArgs e)
{
switch (e.Entry.EntryType)
{
case EventLogEntryType.Error:
DO_ERROR_HANDLING_HERE();
break;
case EventLogEntryType.Warning :
DO_WARNING_HANDLING_HERE();
break;
default:
DO_DEFAULT_HANDLING_HERE();
break;
}
}
}
where WrittenEntryEventHandler will respond to all entries written to the Event Viewer. then later we can filter or add event handlers per type. Thanks to the ones that took time of reading the question itself
Thanks