2017-05-25 161 views
0

目的登錄到Microsoft團隊NLOG

日誌從一個控制檯程序中的錯誤與微軟NLOG團隊通道。

問題

能夠登錄到控制檯,而不是團隊

代碼

配置:

<targets> 
    <target xsi:type="Console" name="console"/> 
    <target xsi:type="WebService" 
     name="microsoft-teams" 
     url="https://outlook.office.com/webhook/abcd" 
     protocol='JsonPost' 
     encoding='UTF-8' 
     includeBOM='false' > 
    </target> 
</targets> 
<rules> 
    <logger name="*" minlevel="Info" writeTo="console" /> 
    <logger name='*' writeTo='microsoft-teams' /> 
</rules> 

記錄代碼:

private static Logger logger = LogManager.GetCurrentClassLogger(); 
public static void Main(string[] args) { 

    logger.Error("{'text':'test'}"); 
    logger.Fatal("Sample fatal error message"); 

} 

控制檯目標非常好地顯示錯誤。但是,研發團隊通道沒有登錄,則nlog-internal.log顯示

System.Net.WebException: The remote server returned an error: (400) Bad Request. at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)

任何有識之士將不勝感激!

回答

3

你至少需要發送一些參數,例如看到web服務器的目標:

<target type='WebService' 
     name='ws' 
     url='http://localhost:1234/logme' 
     protocol='HttpPost' 
     encoding='UTF-8' > 
    <parameter name='param1' type='System.String' layout='${message}'/> 
    <parameter name='param2' type='System.String' layout='${level}'/> 
</target> 

如果仍然不能正常工作,我會建議您檢查與Fiddler

+0

那是我跟着例如呼叫,我如何使用參數?順便說一句,這個調用在Fiddler/Postman中工作正常 – Quentin

+0

原來我用param1命名了同名的佈局,顯然它們是預定義的。現在它工作了!謝謝@Julian – Quentin

+0

我可以通過'logger.Fatal(「Test」)發送一個字符串;'但是不能像'logger.Fatal一樣發送json格式(new ComplextType {Text =「test」,Title =「測試標題「});'看來我需要這個https://github.com/NLog/NLog/issues/1905,但有沒有解決方法? – Quentin