使用Seq搭建免费的日志服务

Seq简介

Seq是老外开发的一个针对.NET平台非常友好的日志服务。支持容器部署,提供一个单用户免费的开发版本。

官网:https://datalust.co/seq

使用文档:https://docs.datalust.co/docs

Seq主体功能如下所示:

支持主流的编程语言,尤其对.NET非常友好

丰富的事件格式

以结构化形式记录上文信息与应用程序事件,支持消息模板将文本数据与结构话数据无缝连接。下图中所有属性都是由使用者自定义的。

使用Seq搭建免费的日志服务

支持筛选语法和SQL查询,非常简单和灵活

多种查询方式-支持以SQL表达式查询,以及C#中的,==,!=,EndsWith,<code>IndexOf/<code>和<code>Contains,并支持文本全文检索。/<code>

使用Seq搭建免费的日志服务

公开了内置字段和函数

支持仪表盘,可以自行创建和编辑图表

使用Seq搭建免费的日志服务

支持安装插件,插件可以使用.NET进行编写

支持发送邮件(通过插件)

支持团队操作

提供命令行客户端

支持健康检查(通过插件)

支持收集Docker日志

支持收集K8s日志

支持自定义警报和Webhook

使用Seq搭建免费的日志服务

部署到k8s

seq部署我们采用的是基于容器的部署,具体可以参考:

https://docs.datalust.co/docs/getting-started-with-docker

腾讯云容器服务yaml配置如下所示:

<code>apiVersion: apps/v1beta2/<code><code>kind: Deployment/<code><code>metadata:/<code><code> annotations:/<code><code> deployment.kubernetes.io/revision: "1"/<code><code> generation: 1/<code><code> labels:/<code><code> k8s-app: seq/<code><code> qcloud-app: seq/<code><code> name: seq/<code><code> namespace: default/<code><code>spec:/<code><code> progressDeadlineSeconds: 600/<code><code> replicas: 1/<code><code> revisionHistoryLimit: 10/<code><code> selector:/<code><code> matchLabels:/<code><code> k8s-app: seq/<code><code> qcloud-app: seq/<code><code> strategy:/<code><code> rollingUpdate:/<code><code> maxSurge: 1/<code><code> maxUnavailable: 0/<code><code> type: RollingUpdate/<code><code> template:/<code><code> metadata:/<code><code> labels:/<code><code> k8s-app: seq/<code><code> qcloud-app: seq/<code><code> spec:/<code><code> containers:/<code><code> - env:/<code><code> - name: ACCEPT_EULA/<code><code> value: "Y"/<code><code> image: datalust/seq:latest/<code><code> imagePullPolicy: IfNotPresent/<code><code> name: seq/<code><code> resources:/<code><code> limits:/<code><code> cpu: 100m/<code><code> memory: 2024Mi/<code><code> requests:/<code><code> cpu: 10m/<code><code> memory: 256Mi/<code><code> imagePullSecrets:/<code><code> - name: qcloudregistrykey/<code><code> - name: tencenthubkey/<code><code> restartPolicy: Always/<code><code>---/<code><code>apiVersion: v1/<code><code>kind: Service/<code><code>metadata:/<code><code> name: seq/<code><code> namespace: default/<code><code>spec:/<code><code> externalTrafficPolicy: Cluster/<code><code> ports:/<code><code> - name: 80-80-tcp/<code><code> nodePort: 31180/<code><code> port: 80/<code><code> protocol: TCP/<code><code> targetPort: 80/<code><code> - name: 5341-5341-tcp/<code><code> nodePort: 31181/<code><code> port: 5341/<code><code> protocol: TCP/<code><code> targetPort: 5341/<code><code> selector:/<code><code> k8s-app: seq/<code><code> qcloud-app: seq/<code><code> sessionAffinity: None/<code><code> type: NodePort/<code>

注意:其中主机端口分别为31180(对应80,用于公开Seq UI和Web Api)、31181(对应5341,用于公开Seq接收终结点的端口)。

一般情况,日志不重要的话,我们可以不进行持久化配置。如需持久化,仅需配置“/data”的映射即可。

使用

Seq对.NET Core支持非常友好,支持:

  • ASP.NET Core

  • Serilog

  • 使用NLog

  • 使用log4net

当然还支持其他语言以及其他的一些方式,比如RabbitMQ、GELF、Windows事件等等。接下来,我们以基于NLog集成为例:

安装包NLog.Targets.Seq

安装NLog.Targets.SeqNuGet包。例如,在Visual Studio程序包管理器控制台中,键入:

<code>PM> Install-Package NLog.Targets.Seq/<code> 

修改NLog配置文件

第一步,需要先添加刚安装的扩展程序集:

<code>/<code><code><code> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">/<code>
<code> /<code><code> /<code><code> /<code>/<code>

然后需要定义规则:

<code>/<code><code> /<code><code> /<code><code> /<code><code> /<code><code> /<code><code> /<code><code> /<code>

需要指定服务端接收端地址和ApiKey。接下来就可以直接使用了。

除此之外,我们还可以添加例如线程Id、机器名等属性,配置示例如下所示:

<code>/<code><code> /<code><code> /<code><code>/<code>

NLOG配置说明

说明

官网:https://nlog-project.org/?r=redirect

配置和使用

https://github.com/NLog/NLog/wiki/Getting-started-with-ASP.NET-Core-2

https://github.com/NLog/NLog/wiki/Getting-started-with-ASP.NET-Core-3

参考配置

<code>/<code>
<code><code> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/<code><code> autoReload="true"/<code><code> internalLogLevel="Warn"/<code><code> internalLogFile="App_Data\Logs\nlogs.log"/<code><code> throwExceptions="true">/<code>
<code> /<code><code> /<code>
<code> /<code><code> /<code><code> /<code><code> /<code><code> /<code><code> <code> type="File"/<code><code> archiveAboveSize="50485760"/<code><code> maxArchiveFiles="50"/<code><code> archiveNumbering="Rolling"/<code><code> keepFileOpen="false"/<code><code> layout="${date:format=HH\:mm\:ss\:ffff}:[${level}] ${callsite} ${onexception:${exception:format=tostring} ${newline}${stacktrace}${newline}"/>/<code>
<code> /<code><code> <code> layout="${date:format=HH\:mm\:ss\:ffff}:[${level}] ${message}"/>/<code>
<code> /<code><code> /<code>
<code> <code> fileName="${logdir}/${level}/${shortdate}.log"/<code><code> layout="${date:format=HH\:mm\:ss\:ffff}: ${logger}${newline}${message} ${onexception:${exception:format=tostring} ${newline}${stacktrace}${newline}" />/<code>
<code> /<code><code> /<code><code> /<code><code> /<code><code> /<code><code> /<code><code> /<code><code> /<code><code> /<code><code> /<code><code> /<code><code> /<code><code> /<code>/<code><code> /<code>/<code><code> /<code><code> /<code><code> /<code><code> /<code><code> /<code><code> /<code><code>/<code>/<code>/<code>

集成之后,我们就可以非常方便的在Seq的面板上看到各种日志和图表了。

转载是一种动力 分享是一种美德

使用Seq搭建免费的日志服务

如果喜欢作者的文章,请关注【麦扣聊技术】订阅号以便第一时间获得最新内容。本文版权归作者和湖南心莱信息科技有限公司共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

文档官网:docs.xin-lai.com

编程交流群<85318032>

产品交流群<897857351>

使用Seq搭建免费的日志服务


分享到:


相關文章: