9
votes

C #: Programme de queue comme programme de texte

J'ai un fichier journal qui enregistre continuellement des lignes courtes. Je dois développer un service qui réagit (ou sondages ou écoute) à de nouvelles lignes ajoutées à ce fichier, une sorte de programme de queue UNIX, de sorte que mon service est toujours à jour, régalant le fichier.

I Don 't penser que l'ouverture d'un flux de lecture et le garder ouvert est une bonne idée. Peut-être que je devrais utiliser la classe FilesSystemwatcher.

Histoire longue courte, j'ai besoin d'analyser en temps réel chaque nouvelle ligne ajoutée à ce fichier.

Une aide ou une indication d'une idée est vraiment appréciée.

edit

Comme je ne suis pas très clair. Je n'ai besoin d'aucun programme, je suis écrire un programme. Pour la lecture (puis le traitement) chaque nouvelle ligne ajoutée au fichier. Je veux dire que ce que je cherche est une méthodologie (ou: comment implémenter cela?) Pour continuellement un fichier un fichier qui continue été écrit.

Je dois développer Un service Windows qui "écoute" dans ce fichier et fonctionne sur chaque nouvelle ligne.

Donc, si, si dans un moment donné, le fichier est: xxx

Dans le moment même que la ligne xxx

est ajoutée au fichier journal du programme de journalisation (que je n'ai pas accès à), j'ai besoin de mon service Windows pour "réagir «À la dépendance à la ligne, interceptez la nouvelle ligne ( 12.32.11 - PCHORL [Connexion] 127 ) et le traiter. Et ainsi de suite.

Maintenant, je ne sais pas comment faire cela. Je devrais interroger le fichier toutes les n secondes, stockez la dernière ligne de lecture en mémoire et ne traitez que les lignes nouvellement ajoutées. Le problème avec ceci est que c'est très lent, plus je lisais un très gros fichier à chaque fois.

ou peut-être que je pourrais utiliser FileSystemwatcher , mais je n'ai pas trouvé Tout exemple d'utilisation de celui-ci à des fins similaires.

Donc, que suggéreriez-vous de faire le travail? Merci.


1 commentaires

Je pense qu'il veut faire une sorte de traitement sur les lignes ajoutées au fichier journal qui ne les affiche pas simplement comme la queue et qu'il aimerait connaître le meilleur moyen de surveiller le journal et de lire dans les lignes.


4 Réponses :


0
votes

Vous n'avez pas vraiment expliqué si vous avez besoin d'un programme de type queue pour Windows, c'est-à-dire http: // www .BaremetaSoft.com / Beretail / ou si vous souhaitez une version Windows de la queue (utilisez Cygwin) ou si vous recherchez une sorte d'API de surveillance du journal ....


0 commentaires

9
votes

Je recommanderais d'utiliser FileSystemwatcher pour être informé des modifications apportées au fichier ou aux fichiers que vous êtes préoccupés. À partir de là, je cache des informations telles que la taille du fichier entre les événements et ajouterait une certaine logique à répondre aux lignes complètes, etc. Vous pouvez utiliser la méthode recherche () du filtream classe pour passer à un point particulier dans le fichier et lire uniquement à partir de là. Compte tenu de ces fonctionnalités, il ne devrait pas être trop difficile de maintenir cette fonctionnalité si c'est ce dont vous avez besoin.


0 commentaires

7
votes

Une solution simple serait utile, exemple de code fourni dans http://www.codeproject.com/articles/7568 / Tail-Net article. Il ne s'agit que d'une seule fonction Copy / Coller dans votre code.


1 commentaires

Si vous écrivez, c'est la plus simple. Si vous n'excédez pas de sondage, alors FileSystemwatcher serait mieux.



5
votes

Il est important de noter que Microsoft (puisque Vista / SVR08) n'est plus mis à jour les métadonnées de fichiers lorsqu'un fichier est mis à jour (tel qu'un fichier journal étant mis à jour par un service).

Par exemple, les métadonnées d'un fichier tel que la date modifiée, ne seront pas mises à jour jusqu'à ce que le fichier soit fermé par le service / programme qui met à jour le fichier journal .

Par conséquent FileSystemwatcher ne prendra pas à jour les mises à jour des fichiers journaux.

https://blogs.technet.microsoft.com/asiasupp/2010/12/14/file-date-modified-property-are-Not-Utilisateur-Modification-Modification-Modification -A-File-Sans-fermeture-it /


0 commentaires