Golang语言中的Prometheus的日志模块使用案例代码编写

 更新时间:2024年08月10日 09:31:06   作者:尹正杰  
这篇文章主要介绍了Golang语言中的Prometheus的日志模块使用案例,本文给大家分享源代码编写方法,感兴趣的朋友跟随小编一起看看吧

一.源代码编写

package main
import (
	"fmt"
	"os"
	"path/filepath"
	"time"
	"github.com/alecthomas/kingpin/v2"
	"github.com/go-kit/log"
	"github.com/go-kit/log/level"
	"github.com/prometheus/common/promlog"
	promlogflag "github.com/prometheus/common/promlog/flag"
	"github.com/prometheus/common/version"
)
var (
	videos = "https://space.bilibili.com/600805398/channel/series"
	docs   = "https://www.cnblogs.com/yinzhengjie"
	// 命令行解析
	app = kingpin.New(filepath.Base(os.Args[0]), fmt.Sprintf("yinzhengjie-devops'server Program, docs: %s, videos: %s", docs, videos))
	// 指定配置文件
	configFile = app.Flag("config.file", "configuration file path").Short('c').Default("yinzhengjie-devops-server.yaml").String()
)
// Logger用于设置prometheus的Logger,
func Logger(config *promlog.Config) log.Logger {
	var (
		l  log.Logger
		le level.Option
	)
	// 设置日志的输出格式
	if config.Format.String() == "logfmt" {
		l = log.NewLogfmtLogger(log.NewSyncWriter(os.Stderr))
	} else {
		l = log.NewJSONLogger(log.NewSyncWriter(os.Stderr))
	}
	// 设置日志级别
	switch config.Level.String() {
	case "debug":
		le = level.AllowDebug()
	case "info":
		le = level.AllowInfo()
	case "warn":
		le = level.AllowWarn()
	case "error":
		le = level.AllowError()
	}
	l = level.NewFilter(l, le)
	// CST可视为美国、澳大利亚、古巴或中国的标准时间,CST可以为如下4个不同的时区的缩写:
	// 		美国中部时间:Central Standard Time (USA) UT-6:00
	// 		澳大利亚中部时间:Central Standard Time (Australia) UT+9:30
	// 		中国标准时间:China Standard Time UT+8:00
	// 		古巴标准时间:Cuba Standard Time UT-4:00
	//
	// 重新设置一下时区,否则是UTC时间,建议设置CST时区,我们以北京的东八区时间为准。
	l = log.With(l, "cts", log.TimestampFormat(
		func() time.Time { return time.Now().Local() },
		"2006-01-02T15:04:05.000Z08:00",
	), "caller", log.DefaultCaller)
	return l
}
func main() {
	// 版本信息
	// app.Version("v1.0")
	app.Version(version.Print("yinzhengjie-devops-server"))
	// 帮助信息
	app.HelpFlag.Short('h')
	promlogConfig := promlog.Config{}
	promlogflag.AddFlags(app, &promlogConfig)
	// 强制解析
	kingpin.MustParse(app.Parse(os.Args[1:]))
	fmt.Printf("configFile: %s\n", *configFile)
	// 设置prometheus的logger
	var logger log.Logger = Logger(&promlogConfig)
	// 输出日志事件时需要指定日志级别,此处我指定的日志级别为"info"
	level.Info(logger).Log(
		// 注意,写入的数据成对出现,比如下面的案例我就写了5对测试数据。
		"Name", "尹正杰",
		"Hobby", "Golang K8S Docker",
		"blog", "https://www.cnblogs.com/yinzhengjie",
		"cfg", *configFile,
		"age", 18,
	)
}

二.编译

go build -o server -ldflags "-X 'github.com/prometheus/common/version.BuildUser=y1053419035@qq.com' -X 'github.com/prometheus/common/version.BuildDate=`date`' -X 'github.com/prometheus/common/version.Version=v0.2'" src/models/server/server.go

三.测试

1.查看服务的版本信息
./server --version
	2.指定程序的配置文件
./server -c /etc/nginx/conf.d/games.conf
	3.查看程序的帮助信息
./server -h
	4.不指定任何参数
./server
	5.指定日志输出格式
./server --log.format=json
	6.同时指定多个参数
./server --log.format=json -c /etc/nginx/nginx.conf

当你的才华还撑不起你的野心的时候,你就应该静下心来学习。当你的能力还驾驭不了你的目标的时候,你就应该沉下心来历练。问问自己,想要怎样的人生。 欢迎交流学习技术交流,个人微信: "JasonYin2020"(添加时请备注来源及意图备注) 作者: 尹正杰, 博客: https://www.cnblogs.com/yinzhengjie/p/18351921

到此这篇关于Golang语言中的Prometheus的日志模块使用案例代码编写的文章就介绍到这了,更多相关Golang Prometheus日志模块使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • go如何优雅关闭Graceful Shutdown服务

    go如何优雅关闭Graceful Shutdown服务

    这篇文章主要为大家介绍了go优雅关闭Graceful Shutdown服务详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • GO语言基本类型String和Slice,Map操作详解

    GO语言基本类型String和Slice,Map操作详解

    这篇文章主要为大家介绍了GO语言基本类型String和Slice,Map操作示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Golang函数这些神操作你知道哪些

    Golang函数这些神操作你知道哪些

    这篇文章主要为大家介绍了一些Golang中函数的神操作,不知道你都知道哪些呢?文中的示例代码讲解详细,具有一定的学习价值,需要的可以参考一下
    2023-02-02
  • 一文带你学会使用Go语言实现自己的MCP服务端

    一文带你学会使用Go语言实现自己的MCP服务端

    这篇文章将带大家速览MCP的核心概念,并以Go语言为例,介绍如何开发MCP服务端和客户端,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下
    2025-04-04
  • Golang使用Token来验证

    Golang使用Token来验证

    token指的是一种用于验证用户身份或授权访问的凭证,本文主要介绍了Golang使用Token来验证,具有一定的参考价值,感兴趣的可以了解一下
    2024-08-08
  • 解决goland中编辑tpl文件不高亮没智能补全的问题

    解决goland中编辑tpl文件不高亮没智能补全的问题

    这篇文章主要介绍了解决goland中编辑tpl文件不高亮没智能补全的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • golang模板template自定义函数用法示例

    golang模板template自定义函数用法示例

    这篇文章主要介绍了golang模板template自定义函数用法,结合实例形式分析了Go语言模板自定义函数的基本定义与使用方法,需要的朋友可以参考下
    2016-07-07
  • Go语言中的格式化输出占位符的用法详解

    Go语言中的格式化输出占位符的用法详解

    在 Go 语言中,格式化输出是一个非常常用的功能,特别是在处理字符串、数字和其他数据类型时,本文将详细介绍 Go 语言中常用的格式化占位符及其用法,希望对大家有所帮助
    2024-10-10
  • Golang实现Java虚拟机之解析class文件详解

    Golang实现Java虚拟机之解析class文件详解

    这篇文章主要为大家详细介绍了Golang实现Java虚拟机之解析class文件的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-01-01
  • goland 搭建 gin 框架的步骤详解

    goland 搭建 gin 框架的步骤详解

    这篇文章主要介绍了goland 搭建 gin 框架的相关知识,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11

最新评论