2009-12-29 5 views
3

J'utilise le bloc d'application de consignation MS pour consigner mon événement d'application dans un fichier appelé app-trace.log qui se trouve dans le dossier c: \ temp.Bloc d'application Microsoft Enterprise Logging - Lecture du fichier journal

J'essaie de trouver la meilleure façon de lire ce fichier lors de l'exécution et de l'afficher lorsque l'utilisateur le demande.

J'ai 2 questions:

  1. Il semble que ce genre de fonctionnalité n'est pas pris en charge par le cadre, donc je dois écrire moi-même lecteur. Est-ce que j'ai râté quelque chose? Existe-t-il un meilleur moyen d'obtenir ces données (sans le mettre en mémoire tampon ou l'enregistrer dans un autre fichier)?

  2. Si je prends la seule alternative pour moi, et mettre en œuvre moi-même lecteur, quand je suis en train de faire:

    System.IO.FileStream fs = new System.IO.FileStream(@"c:\temp\app-trace.log", FileMode.Open, FileAccess.Read);

    Je reçois « fichier utilisé par un autre processus C# ". Probablement le fichier est verrouillé par le bloc d'application. Y a-t-il un moyen d'y accéder et de le lire de toute façon?

Répondre

2

Vous avez raison: la bibliothèque d'entreprise ne prend pas en charge cette fonctionnalité.

Si vous devez récupérer les données à partir du fichier, alors vous devriez être en mesure de le faire en utilisant les éléments suivants:

FileStream fs = new FileStream(@"c:\trace.log", FileMode.Open, FileAccess.Read, FileShare.ReadWrite); 


Je suis curieux de savoir pourquoi les utilisateurs ont besoin d'accéder aux fichiers journaux? Est-ce pour le soutien? S'il s'agit d'une application serveur, je considérerais probablement sérieusement la connexion à une base de données, puis la récupération des données de la base de données lorsque l'utilisateur souhaite afficher les informations du journal.

Questions connexes