Ведение журнала Enterprise Library 5.0 - изменения часового пояса не обнаруживаются во время выполнения? - PullRequest
1 голос
/ 14 октября 2011

По сути, я разработал службу C #, которая запускает и использует журналирование Enterprise Library Library 5.0, настроенное App.config в моем проекте. Я создал специальный форматировщик текста в App.config для своего сервиса, который выглядит следующим образом:

{отметка времени (локальная)} [{win32ThreadId} {словарь (: {значение})}] {сообщение}

Во время выполнения моей службы, если я изменю часовой пояс, системные часы автоматически обновятся, чтобы отразить это изменение часового пояса, однако изменение времени не фиксируется в последующих вызовах регистрации.

И наоборот, если я сам изменяю фактические системные часы, не меняя часовой пояс, он фиксирует изменение времени в последующих журналах вызовов.

Кто-нибудь знает, является ли это ошибкой в ​​Enterprise Library? Кажется, я не могу найти здесь связанных проблем или гуглить об этом после исчерпывающего поиска.

1 Ответ

0 голосов
/ 17 октября 2011

Поведение, которое вы видите, не является ошибкой в ​​Enterprise Library, это поведение .NET.

Данные часового пояса кэшируются, поскольку предполагается, что они являются довольно статическими данными.

Кэшированные данные часового пояса включают в себя данные о местном часовом поясе, Пояс всемирного координированного времени (UTC) и любые часовые пояса, которые извлекается с использованием таких методов, как FindSystemTimeZoneById и GetSystemTimeZones.

Если это действительно проблема, вы можете очистить кеш, вызвав TimeZoneInfo.ClearCachedData().

...