Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Fichier Log dans un Web Service

4 réponses
Avatar
Oxiane
Bonjour à tous,


Je souhaite avoir un log des échanges effectués dans mon web service et je
me pose des questions peut-être métaphysiques.

Bien sur, l'idée du fichier texte est la première solution qui vient à
l'esprit, mais je me pose le problème des accès concurrents.
Si j'ouvre mon fichier de log au début de la méthode du service web, et que
je le ferme à la fin après avoir écrit toutes les tâches que je souhaite
loguer, mon ficher reste ouvert trop longtemps non ? Si un autre client
invoque mon service au même moment, que va t'il se passer si le fichier est
déjà ouvert ? une exception ?

et si j'ouvre et je ferme mon fichier à chaque étape, cela risque de prendre
beaucoup trop de temps, non ?

des idées ? Expérience ?

--
Cordialement

Oxiane
----------------------------------------------------------
Omnia vanitas

4 réponses

Avatar
Zoury
Salut Oxiane ! :O)

Tu peux te créer un fichier avec un nom unique par le biais de la méthode
Path.GetTempFileName() (assure toi d'avoir les droits d'accès au répertoire
TEMP pour le user que ton WebService impersonnifie), ainsi tu pourrais
exécuter la fonction sans te soucier du fichier car il serait dédier à
l'exécution en cours.

Tu peux également employé une base de données pour logguer tes actions..

--
Cordialement
Yanick
MVP pour Visual Basic
Avatar
Oxiane
Yanick,

merci pour ce conseil. Mon problème est que je souhaite avoir tous mes logs
dans un même fichier (pour analyse ultérieure). Si je stocke temporairement
mes onfos dans un fichier texte avant de la vider dans mon fichier de log,
je risque de perdre des infos en cas de plantage...

Comment fait IIS par exemple pour écrire dans un seul fichier log, alors
qu'il peut avoir plusieurs requêtes simultanées ?


--
Cordialement

Oxiane
----------------------------------------------------------
Omnia vanitas


"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de
news:%
Salut Oxiane ! :O)

Tu peux te créer un fichier avec un nom unique par le biais de la méthode
Path.GetTempFileName() (assure toi d'avoir les droits d'accès au


répertoire
TEMP pour le user que ton WebService impersonnifie), ainsi tu pourrais
exécuter la fonction sans te soucier du fichier car il serait dédier à
l'exécution en cours.

Tu peux également employé une base de données pour logguer tes actions..

--
Cordialement
Yanick
MVP pour Visual Basic




Avatar
Zoury
> Comment fait IIS par exemple pour écrire dans un seul fichier log, alors
qu'il peut avoir plusieurs requêtes simultanées ?



Tu peux ouvrir ton fichier en mode partagé. Cela devrait permettre à
plusieurs sources distinctes d'ouvrir le fichier en écriture simultanément
(s'ils ont les droits d'accès).

Ex :
'***
Dim fs As New FileStream( _

ConfigurationSettings.AppSettings.Item("LogFilePath"), _
FileMode.OpenOrCreate, _
FileAccess.Write, _
FileShare.Write)
'***

--
Cordialement
Yanick
MVP pour Visual Basic
Avatar
Oxiane
Super !

je ne connaissais pas ce mode partagé. Cala répond tout à fait à ma
question.

merci !

--
Cordialement

Oxiane
----------------------------------------------------------
Omnia vanitas


"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de
news:eTzez$
> Comment fait IIS par exemple pour écrire dans un seul fichier log, alors
> qu'il peut avoir plusieurs requêtes simultanées ?

Tu peux ouvrir ton fichier en mode partagé. Cela devrait permettre à
plusieurs sources distinctes d'ouvrir le fichier en écriture simultanément
(s'ils ont les droits d'accès).

Ex :
'***
Dim fs As New FileStream( _

ConfigurationSettings.AppSettings.Item("LogFilePath"), _
FileMode.OpenOrCreate, _
FileAccess.Write, _
FileShare.Write)
'***

--
Cordialement
Yanick
MVP pour Visual Basic