使用 NLog 登录到 Microsoft Teams 中的频道
Log to a channel in Microsoft Teams with NLog
Objective
使用 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: The remote server returned an error: (400) Bad Request.
at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
任何见解将不胜感激!
您至少需要发送一些参数,请参阅示例网络服务器目标:
<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
检查通话
我知道有点晚了,但你可以试试我创建的 NLog 扩展。
https://github.com/jedipi/NLog.Targets.MicrosoftTeams
Objective
使用 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: The remote server returned an error: (400) Bad Request. at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
任何见解将不胜感激!
您至少需要发送一些参数,请参阅示例网络服务器目标:
<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
检查通话我知道有点晚了,但你可以试试我创建的 NLog 扩展。 https://github.com/jedipi/NLog.Targets.MicrosoftTeams