【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 ! ?