golang xorm 自定义日志记录器,使用zap实现日志输出、切割日志

该博客主要介绍了使用Golang连接PostgreSQL数据库的相关内容。包括准备并下载所需的包,如xorm、zap等;连接数据库;使用zap日志工具;实现xorm自定义日志记录器等,还给出了完整代码及参考文档。

目录

1.准备并下载好需要的包

2. 连接postgresql数据库

3. zap日志工具

4.实现xorm 自定义日志记录器

5.使用

完整代码


1.准备并下载好需要的包

  1. xorm.io/xorm  
  2. xorm.io/core
  3. go.uber.org/zap
  4. gopkg.in/natefinch/lumberjack.v2  用于切割zap
  5. github.com/lib/pq  本文使用postgresql数据库

2. 连接postgresql数据库

// 创建pg数据库连接
func newDb() (*xorm.Engine, error) {
	source := fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s sslmode=disable",
		"127.0.0.1", 5432, "postgres", "root", "postgres")

	engine, err := xorm.NewEngine("postgres", source)
	if err != nil {
		return nil, err
	}

	// 连接池中最大连接数
	engine.SetMaxOpenConns(100)
	// 连接池中最大空闲连接数
	engine.SetMaxIdleConns(10)
	// 单个连接最大存活时间(单位:秒)
	engine.SetConnMaxLifetime(10)
	engine.ShowSQL(true)

	// 输出日志 终点部分使用自定义日志记录器
	engine.SetLogger(&customXormLogger{
		level:   xormlog.LOG_INFO,
		showSQL: true,
	})

	return engine, nil
}

3. zap日志工具

var (
	loggerMap = map[string]*zap.Logger{}
	loggerMu  = &sync.Mutex{}
)

// zap
func getZapLog() *zap.Logger {
	loggerName := "db" // 日志文件名称

	if logger, has := loggerMap[loggerName]; has {
		return logger
	} else {
		loggerMu.Lock()
        logPath := "./log"
        logFile := fmt.Sprintf("%s/%s.log", logPath, loggerName)
		output := zapcore.AddSync(&lumberjack.Logger{
			Filename:   logFile,
			MaxSize:    100, // 日志文件最大容量(单位:MB),超过容量,文件会自动分割
			MaxBackups: 1,   // 保留的日志天数(单位:天)
			MaxAge:     10,  // 保留的日志文件个数,文件数量超过该值,最旧的文件会被删除
		})

		// 如果需要可以输出当控制台
		//output = zapcore.NewMultiWriteSyncer(output, os.Stdout)
		level := zapcore.DebugLevel
		_ = level.Set("info") // 设置日志级别  debug info warn err
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值