ASP.NET

推荐列表 站点导航

当前位置:首页 > 脚本编程 > ASP.NET >

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

来源:网络整理  作者:wy  发布时间:2020-12-23 03:41
这篇文章主要介绍了使用Seq搭建免费的日志服务的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定...

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

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

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

Seq主体功能如下所示:

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

丰富的事件格式

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

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

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

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

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

4.公开了内置字段和函数

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

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

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

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

8.支持团队操作

9.提供命令行客户端

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

11.支持收集Docker日志

12.支持收集K8s日志

13.支持自定义警报和Webhook

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

部署到k8s

seq部署我们采用的是基于容器的部署,具体可以参考:https://docs.datalust.co/docs/getting-started-with-docker

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

 

apiVersion: apps/v1beta2

kind: Deployment

metadata:

 annotations:

 deployment.kubernetes.io/revision: "1"

 generation: 1

 labels:

 k8s-app: seq

 qcloud-app: seq

 name: seq

 namespace: default

spec:

 progressDeadlineSeconds: 600

 replicas: 1

 revisionHistoryLimit: 10

 selector:

 matchLabels:

  k8s-app: seq

  qcloud-app: seq

 strategy:

 rollingUpdate:

  maxSurge: 1

  maxUnavailable: 0

 type: RollingUpdate

 template:

 metadata:

  labels:

  k8s-app: seq

  qcloud-app: seq

 spec:

  containers:

  - env:

  - name: ACCEPT_EULA

   value: "Y"

  image: datalust/seq:latest

  imagePullPolicy: IfNotPresent

  name: seq

  resources:

   limits:

   cpu: 100m

   memory: 2024Mi

   requests:

   cpu: 10m

   memory: 256Mi

  imagePullSecrets:

  - name: qcloudregistrykey

  - name: tencenthubkey

  restartPolicy: Always

---

apiVersion: v1

kind: Service

metadata:

 name: seq

 namespace: default

spec:

 externalTrafficPolicy: Cluster

 ports:

 - name: 80-80-tcp

 nodePort: 31180

 port: 80

 protocol: TCP

 targetPort: 80

 - name: 5341-5341-tcp

 nodePort: 31181

 port: 5341

 protocol: TCP

 targetPort: 5341

 selector:

 k8s-app: seq

 qcloud-app: seq

 sessionAffinity: None

 type: NodePort

 

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

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

使用

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

ASP.NET

CoreSerilog

使用NLog

使用log4net

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

安装包NLog.Targets.Seq

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

1

 

PM> Install-Package NLog.Targets.Seq

 

修改NLog配置文件

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

1

2

3

4

5

6

7

 

<?xml version="1.0" encoding="utf-8" ?>

<nlog xmlns=""

  xmlns:xsi="">

 

 <extensions>

 <add assembly="NLog.Targets.Seq"/>

 </extensions>

 

然后需要定义规则:

1

2

3

4

5

6

7

8

 

<targets>

 <target name="seq" xsi:type="BufferingWrapper" bufferSize="1000" flushTimeout="2000">

  <target xsi:type="Seq" serverUrl=":5341" apiKey="" />

 </target>

 </targets>

 <rules>

 <logger name="*" minlevel="Info" writeTo="seq" />

 </rules>

 

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

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

1

2

3

4

 

<target name="seq" xsi:type="Seq" serverUrl=":5341" apiKey="">

 <property name="ThreadId" value="${threadid}" as="number" />

 <property name="MachineName" value="${machinename}" />

</target>

 

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

参考配置

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

 

<?xml version="1.0" encoding="utf-8"?>

 

<nlog xmlns=""

  xmlns:xsi=""

  autoReload="true"

  internalLogLevel="Warn"

  internalLogFile="App_Data\Logs\nlogs.log"

  throwExceptions="true">

 

 <!-- 定义日志输出的根目录为web目录的上级目录 -->

 <variable name="logdir" value="${basedir}/App_Data/logs"/>

 

 <extensions>

 <add assembly="NLog.Web.AspNetCore"/>

 <add assembly="NLog.Targets.Seq"/>

 </extensions>

 <targets async="true">

 <default-target-parameters

 type="File"

 archiveAboveSize="50485760"

 maxArchiveFiles="50"

 archiveNumbering="Rolling"

 keepFileOpen="false"

 layout="${date:format=HH\:mm\:ss\:ffff}:[${level}] ${callsite} ${onexception:${exception:format=tostring} ${newline}${stacktrace}${newline}"/>

 

 <!--屏幕彩色打印消息-->

 <target name="console" xsi:type="ColoredConsole"

   layout="${date:format=HH\:mm\:ss\:ffff}:[${level}] ${message}"/>

 

 <!--默认日志-->

 <target xsi:type="File" name="defaultLog" fileName="${logdir}/${level}/${shortdate}.log" layout="${date:format=HH\:mm\:ss\:ffff}: ${message} ${onexception:${exception:format=tostring} ${newline}${stacktrace}${newline}" />

 

 <target name="warnLog" xsi:type="File"

   fileName="${logdir}/${level}/${shortdate}.log"

   layout="${date:format=HH\:mm\:ss\:ffff}: ${logger}${newline}${message} ${onexception:${exception:format=tostring} ${newline}${stacktrace}${newline}" />

 

 <target name="seq" xsi:type="BufferingWrapper" bufferSize="1000" flushTimeout="2000">

  <target xsi:type="Seq" serverUrl="" apiKey="DRkZrdeDMZIXY0gzZGXB">

  <property name="ThreadId" value="${threadid}" as="number" />

  <property name="MachineName" value="${machinename}" />

  <property name="Environment" value="Development" />

  <!--https://github.com/NLog/NLog/wiki/Logger-Layout-Renderer-->

  <property name="Logger" value="${logger}" />

  <!--https://github.com/NLog/NLog/wiki/AspNet-Request-IP-Layout-Renderer-->

  <property name="IP" value="${aspnet-request-ip}" />

  <!--https://github.com/NLog/NLog/wiki/AspNetRequest-Url-Layout-Renderer-->

  <property name="Url" value="${aspnet-request-url:IncludeHost=true:IncludePort=true:IncludeQueryString=true:IncludeScheme=true}" />

  <property name="Code" value="${aspnet-response-statuscode}" />

  </target>

 </target>

 </targets>

 <rules>

 <logger name="*" minlevel="Trace" writeTo="seq" />

 <logger name="*" levels="Trace,Debug,Info" writeTo="console,defaultLog" />

 <logger name="*" minlevel="Warn" writeTo="console,warnLog" />

 </rules>

</nlog>

 

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

总结

到此这篇关于使用Seq搭建免费的日志服务的文章就介绍到这了,更多相关Seq搭建日志服务内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://www.cnblogs.com/codelove/p/13554802.html

相关热词: 方法

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://www.juheyunku.com/jiaob/net/7905.shtml

相关文章
最新文章
如何给asp.net core写个中间 如何给asp.net core写个中间

时间:2021-01-03

.Net微信网页开发解决用户 .Net微信网页开发解决用户

时间:2021-01-03

c++中Socket通信函数之WSAS c++中Socket通信函数之WSAS

时间:2020-12-29

提高生产性工具 提高生产性工具

时间:2020-12-29

全新的membership框架Asp.ne 全新的membership框架Asp.ne

时间:2020-12-29

不用找了,比较全的signal 不用找了,比较全的signal

时间:2020-12-29

计算字符串中每种字符出 计算字符串中每种字符出

时间:2020-12-29

EntityFramework 5.0 CodeFirst 教 EntityFramework 5.0 CodeFirst 教

时间:2020-12-29

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

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

2020-12-23 编辑:wy

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

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

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

Seq主体功能如下所示:

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

丰富的事件格式

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

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

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

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

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

4.公开了内置字段和函数

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

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

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

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

8.支持团队操作

9.提供命令行客户端

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

11.支持收集Docker日志

12.支持收集K8s日志

13.支持自定义警报和Webhook

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

部署到k8s

seq部署我们采用的是基于容器的部署,具体可以参考:https://docs.datalust.co/docs/getting-started-with-docker

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

 

apiVersion: apps/v1beta2

kind: Deployment

metadata:

 annotations:

 deployment.kubernetes.io/revision: "1"

 generation: 1

 labels:

 k8s-app: seq

 qcloud-app: seq

 name: seq

 namespace: default

spec:

 progressDeadlineSeconds: 600

 replicas: 1

 revisionHistoryLimit: 10

 selector:

 matchLabels:

  k8s-app: seq

  qcloud-app: seq

 strategy:

 rollingUpdate:

  maxSurge: 1

  maxUnavailable: 0

 type: RollingUpdate

 template:

 metadata:

  labels:

  k8s-app: seq

  qcloud-app: seq

 spec:

  containers:

  - env:

  - name: ACCEPT_EULA

   value: "Y"

  image: datalust/seq:latest

  imagePullPolicy: IfNotPresent

  name: seq

  resources:

   limits:

   cpu: 100m

   memory: 2024Mi

   requests:

   cpu: 10m

   memory: 256Mi

  imagePullSecrets:

  - name: qcloudregistrykey

  - name: tencenthubkey

  restartPolicy: Always

---

apiVersion: v1

kind: Service

metadata:

 name: seq

 namespace: default

spec:

 externalTrafficPolicy: Cluster

 ports:

 - name: 80-80-tcp

 nodePort: 31180

 port: 80

 protocol: TCP

 targetPort: 80

 - name: 5341-5341-tcp

 nodePort: 31181

 port: 5341

 protocol: TCP

 targetPort: 5341

 selector:

 k8s-app: seq

 qcloud-app: seq

 sessionAffinity: None

 type: NodePort

 

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

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

使用

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

ASP.NET

CoreSerilog

使用NLog

使用log4net

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

安装包NLog.Targets.Seq

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

1

 

PM> Install-Package NLog.Targets.Seq

 

修改NLog配置文件

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

1

2

3

4

5

6

7

 

<?xml version="1.0" encoding="utf-8" ?>

<nlog xmlns=""

  xmlns:xsi="">

 

 <extensions>

 <add assembly="NLog.Targets.Seq"/>

 </extensions>

 

然后需要定义规则:

1

2

3

4

5

6

7

8

 

<targets>

 <target name="seq" xsi:type="BufferingWrapper" bufferSize="1000" flushTimeout="2000">

  <target xsi:type="Seq" serverUrl=":5341" apiKey="" />

 </target>

 </targets>

 <rules>

 <logger name="*" minlevel="Info" writeTo="seq" />

 </rules>

 

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

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

1

2

3

4

 

<target name="seq" xsi:type="Seq" serverUrl=":5341" apiKey="">

 <property name="ThreadId" value="${threadid}" as="number" />

 <property name="MachineName" value="${machinename}" />

</target>

 

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

参考配置

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

 

<?xml version="1.0" encoding="utf-8"?>

 

<nlog xmlns=""

  xmlns:xsi=""

  autoReload="true"

  internalLogLevel="Warn"

  internalLogFile="App_Data\Logs\nlogs.log"

  throwExceptions="true">

 

 <!-- 定义日志输出的根目录为web目录的上级目录 -->

 <variable name="logdir" value="${basedir}/App_Data/logs"/>

 

 <extensions>

 <add assembly="NLog.Web.AspNetCore"/>

 <add assembly="NLog.Targets.Seq"/>

 </extensions>

 <targets async="true">

 <default-target-parameters

 type="File"

 archiveAboveSize="50485760"

 maxArchiveFiles="50"

 archiveNumbering="Rolling"

 keepFileOpen="false"

 layout="${date:format=HH\:mm\:ss\:ffff}:[${level}] ${callsite} ${onexception:${exception:format=tostring} ${newline}${stacktrace}${newline}"/>

 

 <!--屏幕彩色打印消息-->

 <target name="console" xsi:type="ColoredConsole"

   layout="${date:format=HH\:mm\:ss\:ffff}:[${level}] ${message}"/>

 

 <!--默认日志-->

 <target xsi:type="File" name="defaultLog" fileName="${logdir}/${level}/${shortdate}.log" layout="${date:format=HH\:mm\:ss\:ffff}: ${message} ${onexception:${exception:format=tostring} ${newline}${stacktrace}${newline}" />

 

 <target name="warnLog" xsi:type="File"

   fileName="${logdir}/${level}/${shortdate}.log"

   layout="${date:format=HH\:mm\:ss\:ffff}: ${logger}${newline}${message} ${onexception:${exception:format=tostring} ${newline}${stacktrace}${newline}" />

 

 <target name="seq" xsi:type="BufferingWrapper" bufferSize="1000" flushTimeout="2000">

  <target xsi:type="Seq" serverUrl="" apiKey="DRkZrdeDMZIXY0gzZGXB">

  <property name="ThreadId" value="${threadid}" as="number" />

  <property name="MachineName" value="${machinename}" />

  <property name="Environment" value="Development" />

  <!--https://github.com/NLog/NLog/wiki/Logger-Layout-Renderer-->

  <property name="Logger" value="${logger}" />

  <!--https://github.com/NLog/NLog/wiki/AspNet-Request-IP-Layout-Renderer-->

  <property name="IP" value="${aspnet-request-ip}" />

  <!--https://github.com/NLog/NLog/wiki/AspNetRequest-Url-Layout-Renderer-->

  <property name="Url" value="${aspnet-request-url:IncludeHost=true:IncludePort=true:IncludeQueryString=true:IncludeScheme=true}" />

  <property name="Code" value="${aspnet-response-statuscode}" />

  </target>

 </target>

 </targets>

 <rules>

 <logger name="*" minlevel="Trace" writeTo="seq" />

 <logger name="*" levels="Trace,Debug,Info" writeTo="console,defaultLog" />

 <logger name="*" minlevel="Warn" writeTo="console,warnLog" />

 </rules>

</nlog>

 

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

总结

到此这篇关于使用Seq搭建免费的日志服务的文章就介绍到这了,更多相关Seq搭建日志服务内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://www.cnblogs.com/codelove/p/13554802.html

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://www.juheyunku.com/jiaob/net/7905.shtml

相关文章

风云图片

推荐阅读

返回ASP.NET频道首页