当前位置: 代码网 > it编程>前端脚本>Golang > Golang语言中的Prometheus的日志模块使用案例代码编写

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

2024年09月06日 Golang 我要评论
一.源代码编写package mainimport ("fmt""os""path/filepath""time""github.com/alecthomas/kingpin/v2""github.c

一.源代码编写

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日志模块使用内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com