9
votes

Obtenir Nlog pour envoyer JSON avec des en-têtes appropriés?

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: xxx

et le HTTP RAW (nom d'hôte édité): xxx < / pré>


1 commentaires

Veuillez poster ce que vous avez en termes de code et de configuration pour l'application et Couchedb


3 Réponses :


4
votes

Regarder sur le httpnetworksender Source , je ne vois pas de manière évidente de transmettre un type de contenu au WebRequest .

Je pense que vous devrez créer une cible personnalisée basée sur le NetworkTarget qui utilise un httpnetworksender et inclure la configuration pour définir le type de contenu sur le WebRequest de manière appropriée.


3 commentaires

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!



0
votes

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 }
};


0 commentaires

3
votes

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>


0 commentaires