Ведение журнала корпоративной библиотеки не регистрируется в SQL ⇐ C#

Место общения программистов C#
Anonymous
Ведение журнала корпоративной библиотеки не регистрируется в SQL

Сообщение Anonymous »

Я использую EntLib 6 для регистрации одного веб-приложения. Поскольку я использую n-уровней, я хотел поместить журналирование в одну библиотеку, доступную со всех слоев.
Я пытаюсь запустить журналирование, но ничего не происходит, весь код работает, никаких исключений, но в базе данных ничего не появляется.
Вот что я сделал: я создал БД со сценарием, предоставленным в EntLib6, в БД, которая находится под DB_BELVAL строка подключения, я поставил этот тест С# код в переносимом классе, который будет обрабатывать журналирование:

Код: Выделить всё

public static void LogToDatabase()
{
try
{
// Bootstrapping logging
DatabaseFactory.SetDatabaseProviderFactory(new DatabaseProviderFactory());
IConfigurationSource configurationSource = ConfigurationSourceFactory.Create();
LogWriterFactory logWriterFactory = new LogWriterFactory(configurationSource);
Logger.SetLogWriter(logWriterFactory.Create());

if (Logger.IsLoggingEnabled())
{
LogEntry log = GetLogEntry();
log.Categories.Add("General");  // name of Category in EntLib Config editor
log.Priority = 5;
log.Severity = System.Diagnostics.TraceEventType.Information;
log.Message = "Hello dude, from AMLogger";
Logger.Write(log);
}
}
catch (Exception ex)
{
}
}

private static LogEntry GetLogEntry()
{
LogEntry log = new LogEntry();
log.TimeStamp = DateTime.Now;
log.Title = "TANOLIS";
log.Priority = 5;     // default priority
log.Severity = System.Diagnostics.TraceEventType.Verbose;  // default severity
log.MachineName = "MachineName";  //HttpContext.Current.Server.MachineName;
log.ProcessId = System.Diagnostics.Process.GetCurrentProcess().Id.ToString();

return log;
}
И из модульного теста я вызываю метод LogToDatabase() переносимой библиотеки.
Я настроил файл конфигурации модульный тест:
Изображение

или XML: Действительно, ничего не происходит, но я поставил точку останова на модульном тесте, и все выглядит правильно, без исключений.
Спасибо за помощьEDIT 1: logWriterFactory выглядит так, как будто он загрузил XML:
Изображение

РЕДАКТИРОВАНИЕ 2: я отредактировал хранимую процедуру [dbo] .[WriteLog], чтобы создать своего рода флаг (один INSERT INTO [dbo].[TestLog]), чтобы знать, вызывается ли хранимая процедура, и похоже, что приложение не вызывает сохраненную процедура:

Код: Выделить всё

ALTER PROCEDURE [dbo].[WriteLog]
(
@EventID int,
@Priority int,
@Severity nvarchar(32),
@Title nvarchar(256),
@Timestamp datetime,
@MachineName nvarchar(32),
@AppDomainName nvarchar(512),
@ProcessID nvarchar(256),
@ProcessName nvarchar(512),
@ThreadName nvarchar(512),
@Win32ThreadId nvarchar(128),
@Message nvarchar(1500),
@FormattedMessage ntext,
@LogId int OUTPUT
)
AS
INSERT INTO [dbo].[TestLog] ([text]) VALUES ('StoredProc1')

INSERT INTO [dbo].[Log] (EventID, Priority, Severity,
Title, [Timestamp],
MachineName, AppDomainName,
ProcessID, ProcessName,
ThreadName, Win32ThreadId,
Message, FormattedMessage)
VALUES (@EventID, @Priority, @Severity,
@Title, @Timestamp,
@MachineName, @AppDomainName,
@ProcessID, @ProcessName,
@ThreadName, @Win32ThreadId,
@Message, @FormattedMessage)

SET @LogID = @@IDENTITY
RETURN @LogID
И в [dbo].[TestLog] нет новых строк, когда я запускаю модульный тест, поэтому проблема, похоже, связана с C#

Подробнее здесь: https://stackoverflow.com/questions/311 ... log-on-sql

Вернуться в «C#»