2014-12-03 26 views
1

Я получаю исключения синтаксического анализа при использовании WindowsAzure.Storage для доступа к журналам аналитики хранения.Ошибка анализа parlog журнала анализа Azure

Это мой код для извлечения записей журнала:

var recordList = this.SourceAnalyticsClient.ListLogRecords(
    this.Service, this.StartTime, null, this.Configuration.BlobRequestOptions, 
    this.CreateOperationContext()) 
    .ToList(); 

Этого код выдает следующее исключение:

запись журнала разбора Ошибки: не удалось разобрать «в среду, 03-Дек-14 08:59:27 GMT 'с использованием формата: dddd, dd-MMM-yy HH: mm: ss' GMT ' (тип InvalidOperationException)
Трассировка стека исключений:
в Microsoft.WindowsAzure.Storage.Anal ytics.LogRecordStreamReader.ReadDateTimeOffset (формат строки)
на Microsoft.WindowsAzure.Storage.Analytics.LogRecord.PopulateVersion1Log (LogRecordStreamReader считыватель)
на Microsoft.WindowsAzure.Storage.Analytics.LogRecord..ctor (LogRecordStreamReader читателя)

Я предполагаю, что это происходит потому, что моя нить не использует английскую культуру.

Мне нужен способ решить эту проблему или обходной путь.

ответ

1

Вложив это немного, я обнаружил, что LogRecordStreamReader.ReadDateTimeOffset указывает параметр поставщика null на DateTimeOffset.TryParseExact. Это означает, что текущая культура потока будет использоваться - и это не будет работать для потоков, использующих культуры, отличные от английского.

Возможным решением является:

// Remember current culture setting 
CultureInfo originalThreadCulture = Thread.CurrentThread.CurrentCulture; 

try 
{ 
    // Assign the invariant culture temporarily 
    Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; 

    // Let WindowsAzure.Storage parse log records 
    recordList = this.SourceAnalyticsClient.ListLogRecords(
     this.Service, this.StartTime, null, this.Configuration.BlobRequestOptions, 
     this.CreateOperationContext()) 
     .ToList(); 
} 
finally 
{ 
    // Restore original culture setting 
    Thread.CurrentThread.CurrentCulture = originalThreadCulture; 
} 

Я также создал pull request with a suggested fix.

Смежные вопросы