当前位置:网站首页>golang日志库zerolog使用记录
golang日志库zerolog使用记录
2022-07-30 18:58:00 【geekqian】
效果



安装
github官方地址:https://github.com/rs/zerolog
go get -u github.com/rs/zerolog/log
配置
分享下自己用的,有特殊需求的自己看下官方文档,更全面。
需求是: 把日志同时往控制台和日志文件里输出,日志文件用日期每日分拆。
建了log包单独封装。log.go
package log
import (
"fmt"
"github.com/rs/zerolog"
"os"
"strings"
"time"
)
var Logger zerolog.Logger
func init() {
timeFormat := "2006-01-02 15:04:05"
zerolog.TimeFieldFormat = timeFormat
// 创建log目录
logDir := "./run_log/"
err := os.MkdirAll(logDir, os.ModePerm)
if err != nil {
fmt.Println("Mkdir failed, err:", err)
return
}
fileName := logDir + time.Now().Format("2006-01-02") + ".log"
logFile, _ := os.OpenFile(fileName, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
consoleWriter := zerolog.ConsoleWriter{
Out: os.Stdout, TimeFormat: timeFormat}
consoleWriter.FormatLevel = func(i interface{
}) string {
return strings.ToUpper(fmt.Sprintf("| %-6s|", i))
}
consoleWriter.FormatMessage = func(i interface{
}) string {
return fmt.Sprintf("%s", i)
}
consoleWriter.FormatFieldName = func(i interface{
}) string {
return fmt.Sprintf("%s:", i)
}
consoleWriter.FormatFieldValue = func(i interface{
}) string {
return fmt.Sprintf("%s;", i)
}
multi := zerolog.MultiLevelWriter(consoleWriter, logFile)
Logger = zerolog.New(multi).With().Timestamp().Logger()
}
使用
使用时引入自己项目下的log包并且用包里的 Logger 输出。
import "myproject/log"
func SignIn(){
log.Logger.Info().
Str("website", "xx").
Str("account", account).
Msg("开始登录...")
}
边栏推荐
猜你喜欢

【Pointing to Offer】Pointing to Offer 22. The kth node from the bottom in the linked list

荐号 | 对你有恩的人,不要请吃饭来报答

Deepen school-enterprise cooperation and build an "overpass" for the growth of technical and skilled talents

部分分类网络性能对比

Scrapy framework is introduced

博纳影通过IPO注册:阿里腾讯是股东 受疫情冲击明显

core sound driver详解

Mysql执行原理剖析

CCNA-NAT协议(理论与实验练习)

vxe-table实现复选框鼠标拖动选中
随机推荐
Codeblocks + Widgets 创建窗口代码分析
What kind of framework is friendly to developers?
[Prometheus] An optimization record of the Prometheus federation [continued]
【Prometheus】Prometheus联邦的一次优化记录[续]
Anaconda Navigator卡在loading applications
DTSE Tech Talk丨第2期:1小时深度解读SaaS应用系统设计
Codeblocks + Widgets create window code analysis
第14章 类型信息
The use of @ symbol in MySql
MongoDB打破了原则引入SQL?
Scala学习:类和对象
Recommendation | People who are kind to you, don't repay them by inviting them to eat
延时队列优化 (2)
core sound driver详解
尊重客观事实
部分分类网络性能对比
432.4 FPS 快STDC 2.84倍 | LPS-Net 结合内存、FLOPs、CUDA实现超快语义分割模型
CCNA-子网划分(VLSM)
深入浅出边缘云 | 3. 资源配置
Redis for infrastructure