Nlog配置Seq日志服務


什么是Seq?

正如我們使用不同的日志框架來為我們的應用程序收集各類日志信息, 這些信息可以有效的幫助我們快速診斷應用程序中發生的各類問題, 盡管如此,
對於常見的日志框架而言, 它們往往只是解決了日志功能快速集成以及如何配置輸出保存等功能。
對於那些不間斷運行的應用程序而言, 日志的存儲和維護工作會變得異常麻煩, 如果想靈活的在不同時間段去查找日志, 根據不同的日志類型快速的定位問題,
這會變得非常困難,所以為了解決這些問題, Seq就登場了。Seq提供了收集應用程序日志、搜索過濾、警告以及圖表分析等功能。

如何使用Seq?

如果你使用了類似Nlog、Serilog等日志框架, 那很棒, 對於你來說,你幾乎可以很少的配置它即可快速的實現Seq集成。Seq提供了Nlog、Serilog、Log4Net等框架的Seq擴展包。

首先, 你需要安裝且配置好Seq, 官方提供了兩種方式快速創建Seq服務

出於演示的目的, 這里直接安裝Docker鏡像來演示:

  • 下載Seq Docker鏡像
    docker pull datalust/seq

  • 啟動Seq實例, 本地端口5341
    docker run --name seq -d --restart unless-stopped -e ACCEPT_EULA=Y -p 5341:80 datalust/seq:latest

  • 打開瀏覽器輸入,即可

完成Seq的配置之后, 接下來在應用程序當中安裝Nlog、Nlog.Config、NLog.Targets.Seq。

打開Nlog.Config,配置Seq:

<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"
      internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log">

  <extensions>
    <add assembly="NLog.Targets.Seq"/>
  </extensions>
  
  <targets>
    <target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"
            layout="${longdate}|${event-properties:item=EventId_Id:whenEmpty=0}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}"  />

    <target name="seq" xsi:type="BufferingWrapper" bufferSize="1000" flushTimeout="2000">
      <target xsi:type="Seq" serverUrl="http://localhost:5341" apiKey="" />
    </target>
  </targets>

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

以上完成了Nlog的配置, 當應用程序輸出Debug的時候, 即可將信息寫入至Seq。

應用程序調用Debug輸出:

private void Button_Click_3(object sender, RoutedEventArgs e)
        {
            logger.LogDebug("Button_Click_3");
        }

再次瀏覽器打開Seq的服務地址, 會記錄所有點擊Debug的詳細信息, 如下所示:

Seq的其他功能

日志保存到Seq服務器已經完成,剩下的工作就是如果使用Seq集成的搜索、過濾、圖標分析等功能, 來快速診斷應用程序當中的警告、錯誤信息等,
通過不同的日志分析, 我們很可能快速的預知存在問題所在, 這些甚至可以在客戶未察覺異常之前, 我們可以快速的做出響應。

關於Seq的更多使用方法,及高級用法, 可參考官方文檔,考慮Seq也是一個收費性質的框架,就不做過多的介紹,不過有興趣的可以深入了解。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM