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

【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 loggerimport ("fmt""io""log""os""strconv""time"
)// 日志计数器
var count int = 0func 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++ //调用一次加1log.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 ! ?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/235560.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微内核、宏内核、混合内核,三者到底有什么区别?

最近几年,随着国内大厂纷纷发布自研操作系统,大家对这些操作系统的出身和相貌吵得不可开交。然而,本文并不打算陷入这种无尽的争论之中。 在计算机技术的发展历程中,所有的技术都是在不断的迭代和发展中形成的,无论是…

软件测试|如何在 Python 中比较两个列表

简介 在Python中,比较两个列表是一个常见的任务,可以帮助你找出两个列表之间的差异、共同元素或其他关系。本文将详细介绍如何在Python中比较两个列表的不同方法,包括使用循环、集合操作和列表推导式等。 方法1:使用循环比较列表…

hadoop自动获取时间

1、自动获取前15分钟 substr(from_unixtime(unix_timestamp(concat(substr(20240107100000,1,4),-,substr(20240107100000,5,2),-,substr(20240107100000,7,2), ,substr(20240107100000,9,2),:,substr(20240107100000,11,2),:,00))-15*60,yyyyMMddHHmmss),1) unix_timestam…

生成式 AI 如何重塑软件开发流程和开发工具?

生成式AI正在重塑开发流程和开发工具,通过自动化和优化软件开发过程,提高开发效率和质量。它可以帮助开发人员快速生成代码、测试和部署应用程序,同时减少错误和缺陷。此外,生成式AI还可以帮助开发人员快速理解和解决复杂的技术问…

MySQL 5.7.35下载安装使用_忘记密码_远程授权

文章目录 MySQL 5.7.35下载安装使用_忘记密码_远程授权MySQL下载地址mysql安装点击安装,最好以管理员身份运行选择自定义安装选择64位勾选启动自定义产品执行点击同意点击下一步点击执行下一步配置数据库端口号设置登录密码,如果密码忘记,下面…

Fontfabric:一款字体与设计的完美结合

一、产品介绍 Fontfabric是一款由国际字体设计公司Fontfabric开发的字体设计软件。它提供了一整套完整的字体设计工具,让用户可以轻松地创建、设计和定制自己的字体。Fontfabric拥有丰富的字体库,包括各种风格和类型,能够满足用户在不同场景…

[linux]编译一个ko文件并运行

一、需求 有一段代码需要在运行时加载注入内核中&#xff0c;当用户层需要访问时可以提供内核态环境去运行。 二、c代码构建 // #include <errno.h> // #include <string.h> // #include <stdio.h> // #include <fcntl.h> // #include <stdlib.h…

Java中输入和输出处理(三)二进制篇

叮咚&#xff01;加油&#xff01;马上学完 读写二进制文件Data DataInputStream类 FilFeInputStream的子类 与FileInputStream类结合使用读取二进制文件 DataOutputStream类 FileOutputStream的子类 与FileOutputStream类结合使用写二进制文件 读写二进制代码 package 面…

盘活存量GPU资源 破局高校算力不足窘境

“凭啥做大模型的优先分配算力&#xff1f;人家1个人4块A800&#xff0c;我们10个人用2块3090&#xff01;这日子没法过了&#xff01;”听着团队成员们的吐槽&#xff0c;某国内顶尖高校非大模型团队带队的博士老W也颇为无奈&#xff1a;“我们虽然不是做大模型的&#xff0c;…

竞赛保研 基于深度学习的行人重识别(person reid)

文章目录 0 前言1 技术背景2 技术介绍3 重识别技术实现3.1 数据集3.2 Person REID3.2.1 算法原理3.2.2 算法流程图 4 实现效果5 部分代码6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习的行人重识别 该项目较为新颖&#xff0c;适合…

Unity报错:[SteamVR] Not Initialized (109)的解决方法

问题描述 使用HTC vive 头像进行SteamVR插件的示例场景进行测试&#xff0c;发现头显场景无法跳转到运行场景&#xff08;Unity 项目可以运行&#xff0c;仅出现警告&#xff09;。 具体如下&#xff1a; [SteamVR] Not Initialized (109) [SteamVR] Initialization failed…

STL源码阅读总结从小白到大神:vector

一、vector概述 vector的数据格式与array非常相似&#xff0c;两者的差别在于空间的灵活运用&#xff0c;array是静态空间&#xff0c;一旦配置内存空间就不容易更改原来的空间大小。而vector是动态空间&#xff0c;随着元素的加入&#xff0c;它的内部机制就会自动扩容以容纳…

【算法】基础算法001之双指针

&#x1f440;樊梓慕&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 &#x1f31d;每一个不曾起舞的日子&#xff0c;都是对生命的辜负 目录 前言 1.数组分块&#xf…

NACHI机器人模拟示教器如何切换中文

前言 现在开始学习机器人的编程语言&#xff0c;那么要学习会用首先得用模拟示教器来学习&#xff0c;但是全是英文确实比较难受一些些&#xff0c;没有中文来的直观。所以摸透一下如何给示教器更换语言。 具体步骤 步骤一&#xff1a;将中文的汉化包下载下来。具体的下载链…

JMeter 批量接口测试

一、背景 最近在进行某中台的接口测试准备&#xff0c;发现接口数量非常多&#xff0c;有6、70个&#xff0c;而且每个接口都有大量的参数并且需要进行各种参数验证来测试接口是否能够正确返回响应值。想了几种方案后&#xff0c;决定尝试使用JMeter的csv读取来实现批量的接口…

Window Docker安装

1.下载安装Docker 在Windows上安装Docker桌面_Docker中文网 (dockerdocs.cn)https://dockerdocs.cn/docker-for-windows/install/index.html2.安装完&#xff0c;修改镜像 Docker——Windows版本Docker安装_docker windows-CSDN博客https://blog.csdn.net/weixin_51351637/ar…

【软考中级-软件设计师】day7:图

概述 1-2道选择 图的存储 图的遍历 图的最小生成树 prim算法 kruscal算法 2135476 选7不选6是因为4的先删除&#xff08;vi必须在vj之前&#xff09;跟4有关的删了以后&#xff0c;入度为0的结点只剩下7&#xff0c;所以选7再6

13.若依代码自动生成功能详解

文章目录 1.代码自动生成功能2.功能的使用3. 代码的导出和使用 1.代码自动生成功能 基于若依的目录结构&#xff0c;若依本身提供了代码生成功能&#xff0c;可以根据数据库表的内容&#xff0c;生成一些基本的CRUD的前后端的功能。本文将生成过程中的一些注意事项&#xff0c…

【APACHE】的认识和基础配置参数

#主页传送:江南的江 #每日鸡汤&#xff1a;人生没有如果和假设&#xff0c;只有后果和结果。生活有进有退&#xff0c;输什么也不能输心情。生活简单就是迷人的&#xff0c;学会简单其实就是不简单。要学会平静地接受现实&#xff0c;学会对自己说声顺其自然&#xff0c;学会坦…

如何在OpenWRT部署uhttpd搭建服务器实现远程访问本地web站点

文章目录 前言1. 检查uhttpd安装2. 部署web站点3. 安装cpolar内网穿透4. 配置远程访问地址5. 配置固定远程地址 前言 uhttpd 是 OpenWrt/LuCI 开发者从零开始编写的 Web 服务器&#xff0c;目的是成为优秀稳定的、适合嵌入式设备的轻量级任务的 HTTP 服务器&#xff0c;并且和…