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用于設(shè)置prometheus的Logger,
func Logger(config *promlog.Config) log.Logger {
var (
l log.Logger
le level.Option
)
// 設(shè)置日志的輸出格式
if config.Format.String() == "logfmt" {
l = log.NewLogfmtLogger(log.NewSyncWriter(os.Stderr))
} else {
l = log.NewJSONLogger(log.NewSyncWriter(os.Stderr))
}
// 設(shè)置日志級(jí)別
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可視為美國、澳大利亞、古巴或中國的標(biāo)準(zhǔn)時(shí)間,CST可以為如下4個(gè)不同的時(shí)區(qū)的縮寫:
// 美國中部時(shí)間:Central Standard Time (USA) UT-6:00
// 澳大利亞中部時(shí)間:Central Standard Time (Australia) UT+9:30
// 中國標(biāo)準(zhǔn)時(shí)間:China Standard Time UT+8:00
// 古巴標(biāo)準(zhǔn)時(shí)間:Cuba Standard Time UT-4:00
//
// 重新設(shè)置一下時(shí)區(qū),否則是UTC時(shí)間,建議設(shè)置CST時(shí)區(qū),我們以北京的東八區(qū)時(shí)間為準(zhǔn)。
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)
// 強(qiáng)制解析
kingpin.MustParse(app.Parse(os.Args[1:]))
fmt.Printf("configFile: %s\n", *configFile)
// 設(shè)置prometheus的logger
var logger log.Logger = Logger(&promlogConfig)
// 輸出日志事件時(shí)需要指定日志級(jí)別,此處我指定的日志級(jí)別為"info"
level.Info(logger).Log(
// 注意,寫入的數(shù)據(jù)成對(duì)出現(xiàn),比如下面的案例我就寫了5對(duì)測試數(shù)據(jù)。
"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.查看服務(wù)的版本信息 ./server --version 2.指定程序的配置文件 ./server -c /etc/nginx/conf.d/games.conf 3.查看程序的幫助信息 ./server -h 4.不指定任何參數(shù) ./server 5.指定日志輸出格式 ./server --log.format=json 6.同時(shí)指定多個(gè)參數(shù) ./server --log.format=json -c /etc/nginx/nginx.conf
當(dāng)你的才華還撐不起你的野心的時(shí)候,你就應(yīng)該靜下心來學(xué)習(xí)。當(dāng)你的能力還駕馭不了你的目標(biāo)的時(shí)候,你就應(yīng)該沉下心來歷練。問問自己,想要怎樣的人生。 歡迎交流學(xué)習(xí)技術(shù)交流,個(gè)人微信: "JasonYin2020"(添加時(shí)請(qǐng)備注來源及意圖備注) 作者: 尹正杰, 博客: https://www.cnblogs.com/yinzhengjie/p/18351921
到此這篇關(guān)于Golang語言中的Prometheus的日志模塊使用案例代碼編寫的文章就介紹到這了,更多相關(guān)Golang Prometheus日志模塊使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
go如何優(yōu)雅關(guān)閉Graceful?Shutdown服務(wù)
這篇文章主要為大家介紹了go優(yōu)雅關(guān)閉Graceful?Shutdown服務(wù)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
一文帶你學(xué)會(huì)使用Go語言實(shí)現(xiàn)自己的MCP服務(wù)端
這篇文章將帶大家速覽MCP的核心概念,并以Go語言為例,介紹如何開發(fā)MCP服務(wù)端和客戶端,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考一下2025-04-04
解決goland中編輯tpl文件不高亮沒智能補(bǔ)全的問題
這篇文章主要介紹了解決goland中編輯tpl文件不高亮沒智能補(bǔ)全的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-12-12
golang模板template自定義函數(shù)用法示例
這篇文章主要介紹了golang模板template自定義函數(shù)用法,結(jié)合實(shí)例形式分析了Go語言模板自定義函數(shù)的基本定義與使用方法,需要的朋友可以參考下2016-07-07
Golang實(shí)現(xiàn)Java虛擬機(jī)之解析class文件詳解
這篇文章主要為大家詳細(xì)介紹了Golang實(shí)現(xiàn)Java虛擬機(jī)之解析class文件的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-01-01

