EventSource не записывает в базу данных SQL

Я использую EventSource для записи моих событий в базу данных SQL с помощью EnterpriseLibrary.SemanticLogging,

Ниже приводится метод испытаний:

    [TestMethod]
    public void Log_Test()
    {
        var eventListener = new ObservableEventListener();

        var sqlListener = SqlDatabaseLog.CreateListener("Instance", CloudConfigurationManager.GetSetting("ConnectionStringTrace"), "Traces");
        eventListener.EnableEvents(ApplicationEventSource.Log, EventLevel.LogAlways, Keywords.All);

        ApplicationEventSource.Log.ComponentNotLoaded("Milind", "Cheeta", "Core");

А класс ApplicationEventSource наследуется от EventSource следующим методом

        [Event(2,
        Keywords = Keywords.Component,
        Message = "Component: {2} not successfully loaded for user: {0} on machine: {1}",
        Task = Tasks.Load,
        Opcode = EventOpcode.Start,
        Level = EventLevel.Error)]
    public void ComponentNotLoaded(string userName, string machineName, string componentName)
    {
        WriteEvent(2, userName, machineName, componentName);
    }

Я не получаю сообщение об ошибке во время WriteEvent, но ничего не ведется в журнал трассировки таблицы

1 ответ

Пожалуйста, опубликуйте полный класс ApplicationEventSource.

если вы измените метод следующим образом:

public void ComponentNotLoaded(string userName, string machineName, string componentName)
{
    if(IsEnabled())
        WriteEvent(2, userName, machineName, componentName);
}

будет вызываться WriteEvent? Если нет, то что-то не так в структуре. Попробуйте проверить класс EventSource с помощью Event Source Analyzer.

См. https://msdn.microsoft.com/en-us/library/dn774985(v=pandp.20).aspx

Кроме того, обычная процедура для установки приемника базы данных выглядит следующим образом:

eventListener.LogToSqlDatabase(
                Environment.MachineName,
                sqlConnectionString,
            );
Другие вопросы по тегам