DateTimeOffset в Log4Net

Что такое значение log4net.Layout.PatternLayout для вывода типа данных DateTimeOffset в базу данных?

Это то, что у меня сейчас есть в файле конфигурации для log4net:

<log4net>
....
<parameter>
      <parameterName value="@log_date" />
      <dbType value="DateTime" />
      <layout type="log4net.Layout.PatternLayout" value="%date{yyyy'-'MM'-'dd HH':'mm':'ss'.'fff}" />
</parameter>
...
</log4net>

И я хочу иметь что-то вроде:

<log4net>
....
<parameter>
      <parameterName value="@log_date" />
      <dbType value="DateTimeOffset" />
      <layout type="log4net.Layout.PatternLayout" value="%date{yyyy'-'MM'-'dd HH':'mm':'ss'.'fff **OFFSET**}" />
</parameter>
...
</log4net>

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

Спасибо, Алекс


person user2216889    schedule 27.03.2013    source источник


Ответы (2)


Вы должны иметь возможность использовать любую допустимую строку формата DateTime. Попробуй это:

%date{yyyy-MM-ddTHH:mm:ss.fffzzz}
person Matt Johnson-Pint    schedule 28.03.2013
comment
Мне помогло, спасибо. Но для меня все еще не хватало части: datetimeoffset dbType требовал своего размера. (Добавление узла <size value="7" /> после узла dbType.) - person Frédéric; 06.10.2015

Поможет ли определение столбца БД как DateTime и использование %utcdate вместо %date? Это должно сделать все временные метки совместимыми.

person wageoghe    schedule 27.03.2013
comment
Мне нужно хранить DateTimeOffset в базе данных SQL, чтобы знать локальное DateTime клиента. Время UTC не имеет информации о часовом поясе от клиента. смещение равно 0 для UTC. - person user2216889; 28.03.2013