Comment définir de façon dynamique le fichier journal à l'aide de l'App.config et du Système.Diagnostic?

Je cherchais une solution pour permettre la journalisation pour mon dernier projet quand je suis tombé sur un article ( http://www.daveoncsharp.com/2009/09/create-a-logger-using-the-trace-listener-in-csharp/ ) qui parlé de l'utilisation du Système.Diagnostics et App.config pour ouvrir une session via la méthode Trace. J'ai été en mesure de mettre en œuvre avec succès à la fois la classe et de l'Application.config mais je voudrais vraiment être en mesure d'attribuer dynamiquement la valeur et l'emplacement (à l'intérieur de initializeData) du fichier journal et je n'ai pas la moindre idée de comment le faire. Si vous avez des suggestions, n'hésitez pas à poster!

App.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.diagnostics>
    <trace autoflush="true" indentsize="4">
      <listeners>
        <add name="myListener" 
             type="System.Diagnostics.TextWriterTraceListener" 
             initializeData="fileSizeThreshold=512, fileSizeUnit=kilobytes, 
             fileAgeThreshold=1, fileAgeUnit=months, fileNameTemplate='{0}\MyApp-{1:MMM-yy}.log'"/>
        <remove name="Default" />
      </listeners>
    </trace>
  </system.diagnostics>
</configuration>

Enregistreur De Classe:

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;


namespace MyCurrentProject
{
    class Logger
    {
        public void Error(string module, string message)
        {
            WriteEntry(message, "ERROR:", module);
        }

        public void Error(Exception ex, string module)
        {
            WriteEntry(ex.Message, "ERROR:", module);
        }

        public void Warning(string module, string message)
        {
            WriteEntry(message, "WARNING:", module);
        }

        public void Info(string module, string message)
        {
            WriteEntry(message, "INFO:", module);
        }

        private void WriteEntry(string message, string type, string module)
        {
            Trace.WriteLine(
                    string.Format("{0} {1} [{2}] {3}",
                                  DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                                  type,
                                  module,
                                  message));
        }
    }
}

RE: Désolé de ne pas être clair... juste pour être clair, j'ai besoin du chemin d'accès du fichier que le fichier journal de sortie est de sauvegarder à la dynamique du jeu. J'aimerais le chemin pour enregistrer un emplacement dans %AppData%. Le problème que j'avais avec la config est qu'une fois que j'ai défini la valeur de 'initializeData" je ne pouvais pas trouver un moyen de modifier ou de définir de façon dynamique/réinitialiser cette valeur. Franchement... à ce point, je veux juste une solution qui fonctionne et qui me permet de gérer l'emplacement du fichier journal.

OriginalL'auteur Simpleton | 2012-10-10