2009-01-26 5 views
2

Je suis en train de réajuster une ancienne application vb.net pour la rendre conforme aux principes LUA de Vista. Jusqu'à présent, l'application utilisait un méli-mélo de mécanismes de journalisation, mais l'essentiel consistait à écrire un journal dans c: \ temp \ si le dossier existait. Je veux remplacer cette journalisation actuelle par un mécanisme de journalisation plus standard. Ceci étant VB, j'ai décidé d'essayer d'utiliser My.Application.Log en conjonction avec app.config, et cela fonctionne aussi loin que possible (même si je ne m'attendais pas à ce qu'il vienne au profil itinérant). Malheureusement, les utilisateurs ont l'habitude de dépanner avec les informations du journal, ainsi que d'envoyer la connexion lorsqu'ils soumettent un bogue, et déplacer ce journal le cache plutôt bien.Comment puis-je déterminer par programme l'emplacement du journal d'application VB?

Ma pensée est de rendre le journal un peu plus accessible en ajoutant un lien vers elle, ou tout au moins dans le dossier qui le contient, dans l'interface utilisateur de l'application. Je ne sais pas comment déterminer où ce lien va pointer, cependant.

Modifier (info Add'l):

Mon fichier de configuration est plus ou moins la valeur par défaut intégré:

<system.diagnostics> 
    <sources> 
     <source name="Error Log" switchName="DefaultSwitch"> 
      <listeners> 
       <add name="FileLog"/> 
      </listeners> 
     </source> 
    </sources> 
    <switches> 
     <add name="DefaultSwitch" value="Information" /> 
    </switches> 
    <sharedListeners> 
     <add name="FileLog" 
      type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" 
      initializeData="FileLogWriter"/> 
    </sharedListeners> 
</system.diagnostics> 

J'aimerais mettre quelques-unes des propriétés sur le FileLogTraceListener en le fichier de configuration. MaxSize, par ex. (Il y avait un comportement max-size antérieur). Cependant, je ne vois aucune documentation qui appelle cela. (Il y a du contenu communautaire à la base du FileLogTraceListener page qui suggère que je devrais pouvoir le faire, alors je vais vérifier cela, mais je serais beaucoup plus à l'aise si je trouvais un support documenté pour cela.)

Si je fais ça, je devrais être en mesure de parcourir la trace collection d'auditeur sur My.Application.Log et juste un lien au FullLogFileName de la première FileLogTraceListener.

Répondre

1

Je crois que c'est configurable. Il peut être configuré dans le fichier machine.config, ou vous pouvez le remplacer dans le fichier de configuration de votre application - ce que vous voudrez faire pour pouvoir le contrôler et créer un lien vers celui-ci.

Vous voulez ajouter un FileLogTraceListener au app.config.

Il va dans la section . Vous pouvez spécifier le nom de fichier dans l'attribut initializeData.

Plus de documentation MSDN:

0

Une possibilité pourrait être de sauter complètement le My.Application.Log et de passer directement au System.Diagnostics.TraceListener s. Je peux choisir mon propre dossier de journal de cette façon, et je saurai certainement où il se trouve.

+1

Je préférerais m'en tenir à la solution plus VB-y dans VB, si c'est possible. –

0

Je suis fan d'utiliser l'objet intégré Trace pour l'exploitation forestière.En outre, si vous devez conserver l'ancien comportement d'utilisation d'un fichier temporaire, consultez System.IO.Path.GetTempFileName().