.Net Enterprise Library - eventource instance with guid already exists

The problem I'm working on is that I need to create separate log files for each thread. but when I create multiple instances of the observable listener, I see the error that the event source instance already exists, and I did some research and found out that we can only have one event source instance. Is there any work on how to log to separate log files.

Snippet of code

ObservableEventListener listener1 = new ObservableEventListener();
Logger logger1 = new Logger();
listener1.EnableEvents(logger1, EventLevel.LogAlways, Keywords.All);
listener1.LogToFlatFile("LogFile1.txt");

logger1.Informational("HELLO1");

listener1.DisableEvents(logger1);
listener1.Dispose();

ObservableEventListener listener2 = new ObservableEventListener();
Logger logger2 = new Logger();
listener2.EnableEvents(logger2, EventLevel.LogAlways, Keywords.All); -- Here I see an error
listener2.LogToFlatFile("LogFile2.txt");

logger2.Informational("HELLO2");
listener2.DisableEvents(logger1);
listener2.Dispose();

      

+3


source to share


1 answer


The error occurs because multiple instances are in use Logger

(which is EventSource

). There can be only one instance of a specific event source in use. The usual approach to avoid this is to make the EventSource single:



[EventSource(Name = "MyCompany-Logger")]
public sealed class Logger : EventSource
{
    private static readonly Lazy<Logger> Instance = new Lazy<Logger>(() => new Logger());

    private Logger() { }

    public static Logger Log
    {
        get { return Instance.Value; }
    }

    // ...
}

      

+3


source







All Articles