当前位置: 首页 > article >正文

棋牌项目Go的日志打印问题

棋牌项目Go的日志打印问题

  • 项目使用 go work 管理
  • 模块 github.com/spf13/viper 通过 application.yml 加载配置
$ tree
.
├── README.md
├── common
│   ├── application.yml
│   ├── config
│   │   └── config.go
│   ├── go.mod
│   ├── go.sum
│   ├── logs
│   │   └── logs.go
│   └── main.go
├── config
├── connector
│   └── go.mod
├── core
│   └── go.mod
├── framework
│   └── go.mod
├── game
│   └── go.mod
├── gate
│   └── go.mod
├── go.work
├── go.work.sum
├── hall
│   └── go.mod
└── user
    ├── app
    ├── application.yml
    ├── go.mod
    └── main.go
  • application.yml 配置的日志等级为 debug
    • 应用名为 user
appName: user
log:
  level: DEBUG

配置日志模块

  • 安装日志模块: github.com/charmbracelet/log
  • 封装日志, 以便直接调用
    • common/logs/logs.go
package logs

import (
    "common/config"
    "os"
    "time"

    "github.com/charmbracelet/log"
)

var logger *log.Logger

func InitLog(appName string) {
    logger = log.NewWithOptions(os.Stderr, log.Options{
        Prefix:          appName,
        ReportTimestamp: true,
        TimeFormat:      time.DateTime,
        Level:           log.InfoLevel,
    })
	
    if config.Conf.Log.Level == "DEBUG" {
        logger.SetLevel(log.DebugLevel)
    }
}

func Fatal(format string, values ...any) {
    if len(values) == 0 {
        logger.Fatal(format)
    } else {
        logger.Fatal(format, values...)
    }
}

func Info(format string, values ...any) {
	if len(values) == 0 {
        logger.Fatal(format)
    } else {
        logger.Fatalf(format, values...)
    }
}

func Debug(format string, values ...any) {
    if len(values) == 0 {
        logger.Debug(format)
    } else {
        logger.Debug(format, values...)
    }
}

func Error(format string, values ...any) {
    if len(values) == 0 {
        logger.Error(format)
    } else {
        logger.Error(format, values...)
    }
}
  • 调用日志
    • main.go
package main

import (
	"common/config"
	"common/logs"

	"github.com/charmbracelet/log"
)

func main() {
	config.InitConfig("./application.yml")
	logs.InitLog("test")
	log.Info("Hello, World!")
	log.Error("Hello, World!")
	log.Info("Hello, World!")
	a := 1
	go func() {
		log.Info(a)
	}()
	select {}
}

  • 运行命令, 可以看到日志被打印出来
    在这里插入图片描述

http://www.kler.cn/a/430113.html

相关文章:

  • awr报告无法生成:常见分析手段
  • with as提高sql的执行效率
  • HBuilderX打包ios保姆式教程
  • “深入浅出”系列之QT:(6)如何在一个项目中调用另一个项目
  • 【大数据基础】大数据概述
  • FPGA的 基本结构(Xilinx 公司Virtex-II 系列FPGA )
  • workflow笔记
  • WebSocket 经验与最佳实践
  • 《跨越平台壁垒:C++ 人工智能模型在移动设备的部署之路》
  • java+ssm+mysql校园物品租赁网
  • C#请求https提示未能为 SSL/TLS 安全通道建立信任关系
  • XREAL在日本AR市场成功的策略分析
  • Mysql | 尚硅谷 | 第02章_MySQL环境搭建
  • linux 安装 vsftpd 服务以及配置全攻略,vsftpd 虚拟多用户多目录配置,为每个用户配置不同的使用权限
  • 【前端】深度解析 JavaScript 中的 new 关键字与构造函数
  • 【ETCD】【源码阅读】configurePeerListeners() 函数解析
  • 数据结构——哈夫曼树
  • 【电控笔记z46】非线性磁链笔记
  • Spring Boot 3.3.4 升级导致 Logback 之前回滚策略配置不兼容问题解决
  • AI智能体Prompt预设词指令大全+GPTs应用使用
  • Vue了解
  • 使用PXE+Kickstart无人值守安装Linux操作系统
  • 正则表达式去除文本中括号()<>[]里的内容
  • BurpSuite-8(FakeIP与爬虫审计)
  • 工业—使用Flink处理Kafka中的数据_EnvironmentData1
  • 音视频入门基础:MPEG2-TS专题(12)—— FFmpeg源码中,使用Section把各个transport packet组合起来的实现