首页 > 其他分享 >gorm: 配置日志输出到文件

gorm: 配置日志输出到文件

时间:2024-12-07 10:57:50浏览次数:7  
标签:输出 err strings gorm ReplaceAll msg 日志 logger

一,官方文档地址:

https://gorm.io/zh_CN/docs/logger.html

二,代码例子:

1,写日志到文件的函数:

// 日志写入到文件
func LogToFile(filename,msg string) {
	// 输出到文件
	//filename := "logs/" + time.Now().Format("2006-01-02") + ".log"
	file, err := os.OpenFile(filename, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
	if err != nil {
		fmt.Println("日志文件的打开错误 :", err)
	}
	defer file.Close()
	if _, err := file.WriteString(msg); err != nil {
		fmt.Println("写入日志文件错误 :", err)
	}
}

2,创建写日志的writer

type Writer struct{}

// 自定义的sql日志输出(到文件)
func (w Writer) Printf(format string, args ...interface{}) {
	msg := fmt.Sprintf(format, args...) + "\n"
	fmt.Println(msg)  // 打印到控制台
	//得到文件名:
	now := time.Now()
	dateStr:=now.Format("2006-01-02")
	filePath := "/data/logs/businesslogs/gorm_"+dateStr+".log"

	// 替换掉彩色打印符号
	msg = strings.ReplaceAll(msg, logger.Reset, "")
	msg = strings.ReplaceAll(msg, logger.Red, "")
	msg = strings.ReplaceAll(msg, logger.Green, "")
	msg = strings.ReplaceAll(msg, logger.Yellow, "")
	msg = strings.ReplaceAll(msg, logger.Blue, "")
	msg = strings.ReplaceAll(msg, logger.Magenta, "")
	msg = strings.ReplaceAll(msg, logger.Cyan, "")
	msg = strings.ReplaceAll(msg, logger.White, "")
	msg = strings.ReplaceAll(msg, logger.BlueBold, "")
	msg = strings.ReplaceAll(msg, logger.MagentaBold, "")
	msg = strings.ReplaceAll(msg, logger.RedBold, "")
	msg = strings.ReplaceAll(msg, logger.YellowBold, "")

	LogToFile(filePath,msg) // 输出到文件
}

3,创建数据库连接对象的配置:

	gormlogger := logger.New(
		Writer{},
		logger.Config{
			//SlowThreshold: time.Second, // 慢 SQL 阈值
			SlowThreshold: 100 * time.Millisecond, // 慢 SQL 阈值
			//LogLevel:    logger.Info, // Log level
			LogLevel:      logger.Warn, // Log level
			Colorful:      true,        // 允许彩色打印
			IgnoreRecordNotFoundError: true,  // Ignore ErrRecordNotFound error for logger
		},
	)
    //标准输出,替换掉
	//DBLink, err = gorm.Open(mysql.Open(dsn), &gorm.Config{Logger: logger.Default.LogMode(logger.Info),})
	DBLink, err = gorm.Open(mysql.Open(dsn), &gorm.Config{Logger: gormlogger,})
	//DBLink.Logger.LogMode(logger.Info)
	if err != nil {
		return err
	}

 

三,测试效果:

/data/site/indu/service/CountryService.go:12 Error 1406 (22001): Data too long for column 'fengturenqing' at row 1
[3.784ms] [rows:0] UPDATE `zr_country` SET ....

 

标签:输出,err,strings,gorm,ReplaceAll,msg,日志,logger
From: https://www.cnblogs.com/architectforest/p/18573644

相关文章

  • TIM输出比较---STM
    一、简介TIM定时器:OC输出比较输出比较可以通过比较CNT与CCR寄存器(捕获/比较寄存器)值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形;每个高级定时器和通用定时器都拥有4个输出比较通道;高级定时器的前3个通道额外拥有死区生成和互补输出的功......
  • ollama 0.5.0 发布内置结构化输出了
    就在前几天ollama发布了0.5.0了内置支持结构化输出了,同时ollamapython以及js库已经支持此特性了,很值得使用说明同时就在一个小时之前发布了0.5.1解决了一些结构化输出的bug参考资料https://github.com/ollama/ollama/releases/tag/v0.5.0https://github.com/ollama/olla......
  • 怎样在`<pre>`标签内不转义<和>符号(原样输出html标签)?
    在<pre>标签内原样输出<和>符号,你需要使用HTML实体:<代表<>代表>例如,要显示<div>标签,你需要在<pre>标签内写成<div>。<pre><div>Thisissomecontentinsideadiv.</div></pre>这将在浏览器中呈现为:<div>T......
  • 1.输入输出
    Python基础语法输入:input输入自己的姓名并输出name=input("请输入你的姓名:")print(name)输出:printprint源码分析sep:默认为空格#修改拼接符为“-”name=input("请输入你的姓名:")print("您的姓名是",name,sep="-")end:默认为\n#修改结尾换行符为“,”p......
  • 复盘Air780E低功耗模组LuatOS开发的日志输出案例!
    今天我们要复盘的是Air780E低功耗模组LuatOS开发的日志输出案例,希望大家学习的时候有新的思考。一、LuatOS日志输出介绍LuatOS使用log库是进行日志输出,通过log库可以输出不同等级的用户日志。1.1日志的等级debug:调试内容输出,为日志输出优先级第4等级,优先级最低;info:信息输......
  • Linux 日志文件管理工具logrotate
    目前新版的Linux系统中默认安装1、实现大于50M进行日志切割,最多保留50个文件步骤,指定路径下创建一个文件,文件名随意 ......
  • 大模型输出参数说明
    参数名含义取值范围engine大模型后台推理引擎,目前可选的推理引擎有基础模型,古文模型,对话模型和翻译模型‘base_10B’:基础模型translate’:翻译模型‘dialog’:对话模型'‘rhythm_poems’:古文模型temprature模拟退火温度参数。值越大,使得概率分布越尖锐,模型的创造......
  • 【Spring】logback-spring.xml 日志配置
     写项目没关注过这个东西,项目工程文件也是同事从别的项目上搬过来的测试跑环境发现不打印日志了,叫我看看怎么个事情我们找到 logback-spring.xml 文件<?xmlversion="1.0"encoding="UTF-8"?><configurationscan="true"scanPeriod="10seconds"><!--start:控制......
  • [蓝桥杯 2018 省 B] 日志统计
    题目Description小明维护着一个程序员论坛。现在他收集了一份“点赞”日志,日志共有 NN 行。其中每一行的格式是 tsid,表示在 tsts 时刻编号 idid 的帖子收到一个“赞”。现在小明想统计有哪些帖子曾经是“热帖”。如果一个帖子曾在任意一个长度为 DD 的时间段内收到......
  • Spring Boot日志
    博主主页:数据结构专栏:Java数据结构数据库专栏:MySQL数据库JavaEE专栏:JavaEE软件测试专栏:软件测试关注博主带你了解更多知识目录1.?志概述1.1?志的?途1.系统监控2.数据采集3.?志审计2.?志使?2.1打印?志2.1.1在程序中得到?志对象2.1.2使??志对......