【REST2SQL】08 日志重构增加输出到文件log.txt

7 篇文章 0 订阅

【REST2SQL】01RDB关系型数据库REST初设计
【REST2SQL】02 GO连接Oracle数据库
【REST2SQL】03 GO读取JSON文件
【REST2SQL】04 REST2SQL第一版Oracle版实现
【REST2SQL】05 GO 操作 达梦 数据库
【REST2SQL】06 GO 跨包接口重构代码
【REST2SQL】07 GO 操作 Mysql 数据库

原来的日志只输出到控制台,关闭控制台就没有了,重构一下,可以同时输出到控制台和磁盘文件log.txt.

1 创建日志包logger

在这里插入图片描述
在rest2sql/目录下创建日志子目录logger,在此目录下创建日志包文件logger.go,增加以下代码:

/*日志记录器*/

package logger

import (
	"fmt"
	"io"
	"log"
	"os"
	"strconv"
	"time"
)

// 日志计数器
var count int = 0

func Alog(isPrefix bool, logs ...interface{}) {
	fname := "Log" + time.Now().Format("2006-01-02") + ".txt"

	// 日志输出文件,没有log.txt会新建,有会追加日志
	file, err := os.OpenFile(fname, os.O_CREATE|os.O_APPEND|os.O_RDWR, os.ModePerm)
	if err != nil {
		return
	}
	defer file.Close()

	// 同时输出到标准输出流 和  文件
	multiWriter := io.MultiWriter(os.Stdout, file)
	log.SetOutput(multiWriter)

	//日志输出前缀
	if isPrefix {
		count++ //调用一次加1
		log.SetPrefix("   REST2SQL(" + strconv.Itoa(count) + ") @ ")
	}

	//日志输出内容
	logtext := ""
	for _, txt := range logs {
		logtext += fmt.Sprint(txt)
	}

	log.Printf(logtext)
}

2 调用示例

2.1 引用logger包

import ”rest2sql/logger“

2.2 需要写入日志的地方调用

// 打印配置信息
	logger.Alog(false, "config:", config.Conf)

		// 请求日志输入到标准输出 和 log.txt文件
		logstr := fmt.Sprintf(
			"\t\t%s\t\t%s\t\t%s\t\t%v",
			r.Method,
			r.RemoteAddr,
			r.RequestURI,
			time.Since(start),
		)
		logger.Alog(true,logstr)
		
//执行 sql并返回 json 结果
	logger.Alog(true, fmt.Sprint("deleteDel:", deleteSQL))

3 运行效果

3.1 控制台输出

在这里插入图片描述

3.2 日志文件记录

在这里插入图片描述

3.3 日志文件内容

在这里插入图片描述
OK ! ?

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值