Essayer d'utiliser Nlog pour envoyer des journaux codés JSON de notre application C #, de les jeter dans CouchDB. Cependant, en utilisant la cible réseau, je ne peux pas sembler trouver un moyen de définir correctement l'en-tête de type contenu; et Couchdb n'aura rien à voir avec mon intrant sinon.
Couchdb est sorti de la touche, Current Nlog Config: p> et le HTTP RAW (nom d'hôte édité): p>
3 Réponses :
Regarder sur le Je pense que vous devrez créer une cible personnalisée basée sur le httpnetworksender code> Source , je ne vois pas de manière évidente de transmettre un type de contenu au
WebRequest code>. p>
NetworkTarget code> qui utilise un
httpnetworksender CODE> et inclure la configuration pour définir le type de contenu sur le
WebRequest code> de manière appropriée. P>
Ou si vous voulez devenir vraiment fou, vous pouvez essayer de intégrer toute la conversation HTTP dans la mise en page, puis définissez l'adresse sur TCP. Je ne sais pas si cela fonctionnerait, pourrait être intéressant cependant.
Le correctif HTTPNetworksender était assez facile, cela a fait l'affaire.
Cela vous dérangerait-il de contribuer au patch à la communauté? J'ai le même problème. Merci!
Si quelqu'un trébuche encore sur ceci, voici une démonstration simple pour la cible HTTP personnalisée (Nlog v4.xx).
var asyncWebTarget = new AsyncTargetWrapper() { Name = "web_batch_logServer", BatchSize = 100, TimeToSleepBetweenBatches = 1000, OverflowAction = AsyncTargetWrapperOverflowAction.Grow, WrappedTarget = new WebPostTarget { ServerUrl = logServerUrl } };
Nlog ver. 4.5 Cible WebService a la possibilité de configurer des en-têtes personnalisés.
<target xsi:type="WebService" name="CouchDB" url="http://127.0.0.1:5984/logger/" protocol="JsonPost" encoding="utf-8"> <parameter layout="FileLayout" /> <header name="Content-Type" layout="application/json" /> </target>
Veuillez poster ce que vous avez en termes de code et de configuration pour l'application et Couchedb