Créer un fichier d'évènements

Résolu
rbidocho Messages postés 41 Date d'inscription jeudi 7 juin 2007 Statut Membre Dernière intervention 15 septembre 2008 - 26 juin 2007 à 14:23
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 - 28 juin 2007 à 10:36
Bonjour,

voilà, je souhaite créer un fichier dès l'ouverture de mon MainForm dans lequel je pourrais a tout moment inscrire un évènement qui sera horodaté. Ce fichier devra être accessible depuis les usercontrole, ainsi que les autres form et classes que j'ai dans mon projet.

avez vous déjà des début de solution à ce genre de petit exercice ?

d'avance Merci

RB

XP SP1, .NET 1.1, sous SharpDevelop 1.1

4 réponses

rbidocho Messages postés 41 Date d'inscription jeudi 7 juin 2007 Statut Membre Dernière intervention 15 septembre 2008
27 juin 2007 à 15:30
Bon alors j'ai trouvé une solution. Je ne sais pas si c'est la meilleur mais bon ça marche.

voici le code de la méthode aoutée dans classe MainForm :

public void Log(string txtMessage)
{
    FileStream fSLog;    string sFileName Application.ExecutablePath+".log";// Nom du fichier nom de l'executable + .log
    if (File.Exists(sFileName)){
        fSLog=new FileStream(sFileName,FileMode.Append,FileAccess.Write); //si fichier existe on ajoute
    }else{
        fSLog=new FileStream(sFileName,FileMode.Create);//sinon on créé
    }
    StreamWriter sW = new StreamWriter(fSLog);//ouverture du flux d'écriture
    sW.WriteLine(DateTime.Now.Date.ToShortDateString()+ " " +DateTime.Now.ToLongTimeString()+ "." +DateTime.Now.Millisecond.ToString("000")+"..."+txtMessage);//inscription du message
    sW.Close();//fermeture du lux d'écriture
    fSLog.Close();//fermeture du fichier
}

Il faut maintenant que je me penche sur sa durée de vie et/ou sa taille maximale (je parle du fichier).
J'appelle cette méthode n'importe ou dans mon MainForm avec un this.Log(message). Et quand je suis dans une autre classe, UserControl ou autre je fais d'abord un
MachinAppelé.Owner = this dans mon MainForm
puis un
MainForm MF = ((MainForm)(this.Owner))
et MF.Log(Message)
dans la classe appelée.

Voilà si ça peut aider !!
RB
3
bernie666 Messages postés 427 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 29 janvier 2008 1
26 juin 2007 à 18:20
J'aurais quelque chose de ce genre à faire je me pencherai pour un fichier xml

Bonne soirée
0
rbidocho Messages postés 41 Date d'inscription jeudi 7 juin 2007 Statut Membre Dernière intervention 15 septembre 2008
27 juin 2007 à 11:04
Bonjour,
je ne suis pas très calé en fichier xml.

Comment ferais tu ??

de plus je serais plutot pour fichier texte, un peu comme les fichiers d'instal où il y a ligne par ligne ce que le programme d'instal à fait.

En fait je voudrais qu'une fois mon programme terminé je me retrouve avec un fichier du type :

12:10:02....Démarrage Programme
12:10:03....Ouverture du fichier XXX
12:10:03....Calcul de ZZZ
12:10:03....Fermeture du fichier XXX
....etc
12:15:20....Fermeture Programme

merci

RB
0
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
28 juin 2007 à 10:36
Hello,

Personellement, je préfère utiliser File.AppenAllText, pas besoin de s'occuper de stream ou de l'existance du fichier, tout est géré.

string fileName =
string.
Format(
"{0}.{1}.log",
Application.
ExecutablePath,
DateTime.
Now.
ToString(
"yyyyMMdd"));

File.
AppendAllText(filename
,
string.
Format(
"{0}...{1}{2}",
DateTime.
Now.
ToString(
"dd.MM.yyyy HH:mm:ss.fff"),
txtMessage,
Environment.
NewLine));

Par contre, ça ne marche pas avant la 2.0.
Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
0
Rejoignez-nous