Блок приложения журналирования: отметка времени слушателя трассировки базы данных - PullRequest
1 голос
/ 10 октября 2011

Я регистрирую исключение, используя блок приложения Microsoft Enterprise Library Logging.Я использую прослушиватель трассировки базы данных.

Временная метка записи журнала по умолчанию указывается в формате UTC.

Я знаю, что у меня может быть временная метка местного времени в столбце FormattedMessageтаблицу 'Log', установив форматер журнала следующим образом: Timestamp: {timestamp (local)}

Как мне сделать то же самое со столбцом Timestamp?

Спасибо.

1 Ответ

2 голосов
/ 12 октября 2011

Самый простой способ сделать то, что вы хотите, это установить свойство Timestamp для LogEntry.

например:.

LogEntry le = new LogEntry()
{
    Message = "Log it",
    TimeStamp = DateTime.Now // use local time
};

le.Categories.Add("General");

Logger.Write(le);

Другие варианты сделать то, что вы хотите, это создать пользовательский прослушиватель трассировки или изменить хранимую процедуру WriteLog для использования любого значения, которое вы пожелаете. Вы можете просто использовать GETDATE() или сделать некоторую манипуляцию переданным в UTC Timestamp:

DATEADD(HOUR, DATEDIFF(HOUR, GETUTCDATE(), GETDATE()), timestamp) 

В качестве точки интереса (поскольку вы обычно не используете этот тип кода), если вы используете метод Write () в FormattedDatabaseTraceListener напрямую, он использует локальный DateTime. E.g.:

var dbWriter = new FormattedDatabaseTraceListener(
    EnterpriseLibraryContainer.Current.GetInstance<Database>(),
    "writeLog", "AddCategory", new TextFormatter());

dbWriter.Write("Log this!", "General");

Но, как написал комментатор, я бы рекомендовал придерживаться UTC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...