2016-04-25 4 views
2

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

Ниже Метод испытания:

[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 класс вытекает из следующих источников событий с метод

 [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, но ничего не быть лог в таблице трассировки

ответ

0

Просьба разместить полный класс ApplicationEventSource.

если вы изменили метод так:

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

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

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

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

eventListener.LogToSqlDatabase(
       Environment.MachineName, 
       sqlConnectionString, 
      );