Mettre à jour le nom du fichier cible de NLog à l'exécution
Dans mon application, je travaille sur plusieurs milliers de documents par jour. J'aimerais, dans certains cas, des journaux, un journal par document. Ensuite, je voudrais pour une cible spécifique changer le nom du fichier de sortie (et seulement le nom du fichier) à l'exécution.
autour du web j'ai trouvé comment créer une cible en me programmant je voudrais juste mettre à jour un le nom de fichier par la programmation. J'ai essayé le code ci-dessous. L'erreur que je reçois est "LayoutRender cannot be found 'logDirectory'.
N'importe quelle idée ?
Merci,
var target = (FileTarget)LogManager.Configuration.FindTargetByName("logfile");
target.FileName = "${logDirectory}/file2.txt";
LoggingConfiguration config = new LoggingConfiguration();
var asyncFileTarget = new AsyncTargetWrapper(target);
config.AddTarget("logfile", asyncFileTarget);
LogManager.Configuration = config;
Le fichier de config est :
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<variable name="logDirectory" value="C:/MyLogs"/>
<targets>
<target name="logfile" xsi:type="File" layout="${date:format=dd/MM/yyyy HH:mm:ss.fff}|${level}|${stacktrace}|${message}" fileName="${logDirectory}/file.txt" />
</targets>
<rules>
<logger name="*" minlevel="Info" writeTo="logfile" />
</rules>
</nlog>
3 réponses
ReconfigExistingLoggers
méthode:
var target = (FileTarget)LogManager.Configuration.FindTargetByName("logfile");
target.FileName = "${logDirectory}/file2.txt";
LogManager.ReconfigExistingLoggers();
comme écrit dans docs:
Boucle tous les loggers déjà retournés par GetLogger. et recalcule leur liste de cibles et de filtres. Utile après avoir modifié le programmer la configuration pour s'assurer que tous les loggers ont été correctement configuré.
EDIT:
Essayez d'utiliser la mise en page personnalisée de rendu: fichier de configuration NLog pour obtenir les valeurs de configuration à partir d'un site web.config