1

客观的

使用 NLog 从控制台程序将错误记录到 Microsoft Teams。

问题

能够登录到控制台,但不能登录到 Teams

代码

配置:

<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");

}

控制台目标很好地显示了错误。但是 Teams 频道没有日志,nlog-internal.log显示

System.Net.WebException:远程服务器返回错误:(400)错误请求。在 System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)

任何见解将不胜感激!

4

2 回答 2

4

您至少需要发送一些参数,请参阅示例 webserver 目标:

<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检查通话

于 2017-05-25T22:41:37.870 回答
1

我知道这有点晚了,但你可以试试我创建的 NLog 扩展。 https://github.com/jedipi/NLog.Targets.MicrosoftTeams

示例输出

于 2021-02-07T08:01:16.190 回答