est-il possible d'utiliser une variable pour spécifier une cible spécifique?
Je veux basculer entre la base de données et le filelogging en fonction de l'environnement que j'exécute mon application sur. P>
Ceci n'est cependant pas semble fonctionner: p> dans mon démarrage de l'application J'ai (erreur survient sur la première ligne): p> quand startin L'application L'exception suivante est lancée: p> Je suppose que les variables ne sont pas disponibles lors de l'analyse du fichier de configuration.
Comment puis-je définir les variables afin que Nlog les utilise lors de l'analyse du fichier de configuration?
Est-il possible d'utiliser une variable pour définir une valeur d'attribut?
Ou n'est-ce pas supporté par Nlog? P> Remarque: j'ai une autre variable dans la configuration NLOG qui fonctionne p> je suppose que les enregistreurs sont vérifiés Une fois au démarrage et la cible réelle est évaluée lorsqu'un logement se produit. P> Mise à jour: obtenez-la sans variable dans le fichier de configuration.
Je devais supprimer l'enregistreur de la configuration et le créer via le code p>
3 Réponses :
Un moyen de le faire est d'avoir un fichier web.config différent basé sur l'environnement et vous modifierez la chaîne de connexion. C'est la méthode que j'utilise. P>
Aussi Nlog est initialisé une fois que l'application commence ainsi, vous ne pouvez pas modifier ce qui est écrit dans le nlog.config p>
Réglage des variables via nlog.logmanager.configuration.variables ne fonctionne pas pour tous les attributs du fichier nlog.config. Je ne sais pas pourquoi, mais c'est un problème connu et c'est malheureux comment ça fonctionne. Mais il y a une solution de contournement simple, voici un exemple de la manière dont j'ai résolu ce problème pour connaître l'attribut ConnectionsRing d'une cible.
NLog.LogManager.Configuration.Variables["DATABASE_FILE_NAME"] = "foo.db";
Nlog 4.6.7 facilite la mise à jour des règles de journalisation à l'exécution comme ceci: alors vous pouvez le faire: p> if (IsDevelopment())
LogManager.Configuration.Variables["fileMinLevel"] = "Debug";
else
LogManager.Configuration.Variables["databaseMinLevel"] = "Debug";
LogManager.ReconfigExistingLoggers();
Vous pouvez rechercher des connexions à partir d'appsettings.json à l'aide de
$ {configsetting} code>. Voir aussi Github.com/nlog/nlog/wiki/configsetting-layout-renderer < / a>