2017-02-09 10 views
-1

У меня проблема с моим StreamWriter. Я использую Visual Studio 2010 и 2015, .NET Framework 4.0. Вот пример моего кода для записи в файл журнала:C# Строка ввода StreamWriter не совпадает с выходной строкой в ​​файле

using (StreamWriter swErr = new StreamWriter(HostingEnvironment.MapPath("~/Logs/") + 
      DateTime.Now.ToString("yyyyMMdd") + ".log", true, Encoding.Default)) 
{ 
    if (!string.IsNullOrEmpty(errMsg)) 
     swErr.WriteLine(DateTime.Now.ToString("HH:mm:ss " + errMsg)); 
    if (result != null && result.Count > 0) 
     foreach (Mandrill.EmailResult x in result) 
     { 
      stat = string.Format("{0} | {1} | {2} | {3}", 
         x.Id, x.Email, x.Status, x.RejectReason ?? "-" 
      ); 
      Console.WriteLine(stat); 
      swErr.WriteLine(DateTime.Now.ToString("HH:mm:ss " + stat)); 
     } 
    if (!string.IsNullOrEmpty(errMsg) || (result != null && result.Count > 0)) 
     swErr.WriteLine("---"); 
} 

По какой-то причине, здесь образец Ожидаемое против фактического выхода этого кода:

Expected OUTPUT: 

10:10:02 e7424f10d1ee431fb69d9014265b278a | [email protected] | Sent 

---------- 



ACTUAL OUTPUT 

10:10:02 e742431091ee4313b6999014265b278a | [email protected] | SenA 

---------- 

По некоторым причинам я не знаю он преобразует некоторый символ в случайное число или букву (буквы). Я попытался удалить параметр StreamWriter for Encoding, также пробовал пройти и Encoding.UTF8, но он все тот же.

Я думаю, что мой синтаксис в порядке и правильно обработал StreamWriter.

Я надеюсь, что кто-нибудь может мне помочь в этом.

Спасибо!

+0

У вас есть специальные символы ввода? – A3006

+0

Еще одна вещь, если вы попытаетесь использовать File.WriteAllText(), каков результат? – A3006

+0

У меня нет специальных символов. Кроме того, файл, загруженный по пути в streamWriter, либо не существует, либо существует. Я попробую использовать то, что вы предлагаете, и посмотреть, что произойдет. –

ответ

0

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

DateTime.Now.ToString("HH:mm:ss" + errMsg); 

Это должно быть:

DateTime.Now.ToString("HH:mm:ss") + errMsg; 


Надежда любой другой человек не будет сталкиваться с этим.