Créer un fichier d'évènements [Résolu]

Signaler
Messages postés
41
Date d'inscription
jeudi 7 juin 2007
Statut
Membre
Dernière intervention
15 septembre 2008
-
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
-
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

Messages postés
41
Date d'inscription
jeudi 7 juin 2007
Statut
Membre
Dernière intervention
15 septembre 2008

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
Messages postés
427
Date d'inscription
mercredi 1 octobre 2003
Statut
Membre
Dernière intervention
29 janvier 2008
1
J'aurais quelque chose de ce genre à faire je me pencherai pour un fichier xml

Bonne soirée
Messages postés
41
Date d'inscription
jeudi 7 juin 2007
Statut
Membre
Dernière intervention
15 septembre 2008

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
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
64
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)