2017-02-09 1 views
-1

J'ai un problème avec StreamWriter. J'utilise Visual Studion 2010 et 2015, .NET Framework 4.0. Voici l'exemple de mon code pour écrire un fichier journal:C# La chaîne d'entrée StreamWriter n'est pas la même sur la chaîne de sortie du fichier

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("---"); 
} 

Pour une raison quelconque, est l'échantillon ici attendu vs sortie réelle de ce code:

Expected OUTPUT: 

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

---------- 



ACTUAL OUTPUT 

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

---------- 

Pour une raison quelconque, je ne sais pas il convertit un caractère en un nombre aléatoire ou une lettre (s). J'ai essayé de supprimer le paramètre de StreamWriter pour l'encodage, également essayé de passer et Encoding.UTF8 mais c'est toujours la même chose.

Je pense que ma syntaxe est OK et j'ai géré la disposition du StreamWriter correctement.

J'espère que n'importe qui peut m'aider à ce sujet.

Merci!

+0

Avez-vous des caractères spéciaux en entrée? – A3006

+0

Encore une chose, si vous essayez d'utiliser File.WriteAllText(), quelle est la sortie? – A3006

+0

Je n'ai aucun caractère spécial. En outre, le fichier chargé sur le chemin sur streamWriter est inexistant ou existant. Je vais essayer d'utiliser ce que vous suggérez et voir ce qui se passe. –

Répondre

0

Pour ceux qui vont rencontrer cette question. Je suis vraiment désolé pour ma stupidité mais c'est une erreur de syntaxe. Le message d'erreur est inclus dans le formatage de la chaîne de la date.

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

Ce doit être:

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


Espoir toute autre personne ne rencontrerait pas cela.