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. P>
Histoire longue courte, j'ai besoin d'analyser en temps réel chaque nouvelle ligne ajoutée à ce fichier. P>
Une aide ou une indication d'une idée est vraiment appréciée. P>
edit strong> p> Comme je ne suis pas très clair. Je n'ai besoin d'aucun programme, je suis écrire em> 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 em> un fichier qui continue été écrit. P> Je dois développer Un service Windows qui "écoute" dans ce fichier et fonctionne sur chaque nouvelle ligne. p> Donc, si, si dans un moment donné, le fichier est: p> Dans le moment même que la ligne p> 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 ( 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. P> ou peut-être que je pourrais utiliser Donc, que suggéreriez-vous de faire le travail? Merci. P> p> 12.32.11 - PCHORL [Connexion] 127 code>) et le traiter. Et ainsi de suite. P>
FileSystemwatcher code>, mais je n'ai pas trouvé Tout exemple d'utilisation de celui-ci à des fins similaires. P>
4 Réponses :
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 .... P>
Je recommanderais d'utiliser FileSystemwatcher code> 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 () code> du
filtream code> 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. P>
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. P>
Si vous écrivez, c'est la plus simple. Si vous n'excédez pas de sondage, alors FileSystemwatcher serait mieux.
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). P>
Par exemple, les métadonnées d'un fichier tel que la date modifiée, Par conséquent Strong> FileSystemwatcher Strong> ne prendra pas à jour les mises à jour des fichiers journaux. p>
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.