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,
);