demoshop

demo, trying to be the best_

在昨天 twMVC 每週四固定聚會時,不知道怎麼聊的扯到了 Slack 顯示 NLog 的需求,我就說我有寫過結果立即被吐槽說我只有寫 Elmah 的,原來我藏招藏了那麼久.....

回到家以後我就再想,為什麼會沒有寫這篇呢?才想到原因,當初覺得這只是套件的應用,並沒有太多的技術門檻所以就沒寫出來了,但既然有人問了那我還是好人做到底,寫一篇文讓有需要的朋友可以按圖施工,保證成功。

為了避免一切繁雜的情境,就直接開一個新的 MVC 專案來當範例吧,開啟 MVC 專案後直接使用 NuGet 搜尋「Nlog.Slack」


安裝的時候會連同相依性套件一併安裝,所以 NLog 也會一起加進來

​


不過該套件相依的 NLog 只有 3.x 為了求新求變 demo 會將 NLog 升級到最新版(請使用 NuGet),同時請一併安裝 NLog.Config 這樣就可以省去自己建立 config 檔案的麻煩


套件的部分結束了,再來請前往 Slack 網站增加 Incoming WebHooks 「傳送門」


選擇要拿來當 Log 的頻道(本範例使用 #test)


Slack會提供一個 Webhook URL 請完整複製


再來開啟 NLog.config 調整如下

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
      autoReload="true"
      throwExceptions="false">


  <variable name="myvar" value="myvalue"/>
  <extensions>
    <add assembly="NLog.Slack" />
  </extensions>


 <targets async="true">
    <target xsi:type="Slack"
            name="slackTarget"
            layout="${message}"
            webHookUrl="https://hooks.slack.com/services/XXXXXX/XXXXX/XXXXXX"
            channel="#test"
            username="demoshop"
            compact="false"
            icon=":ghost:" />
  </targets>


  <rules>
    <logger name="*" minlevel="Debug" writeTo="slackTarget" />
  </rules>
</nlog>

請注意其中 channel 必須是你的頻道名稱,本範例為 test


到這裡就全部設定完畢了,您可以利用以下的範例語法來測試看看 Slack 有沒有正常反應

public ActionResult Index()
{
    var logger = NLog.LogManager.GetCurrentClassLogger();
    logger.Info("http://skilltree.my 業界師資,實戰教學");
    return View();
}

就是這樣的簡單,純粹的套件與服務應用而已,當然 NLog 可以塞什麼、Slack 還可以幹什麼、範例語法太蠢的這些問題都不是本篇注重的點,請各位自行去研究與調整了。

 

 

 

留言討論

目前還沒有留言,歡迎留下您的意見。

發表留言

留言將在管理員審核後顯示