go语言day20 使用gin框架获取参数 使用自定义的logger记录日志

news2024/11/14 13:42:53

 Golang 操作 Logger、Zap Logger 日志_golang zap-CSDN博客

目录

     一、  从控制器中获取参数的几种形式

    1)  页面请求url直接拼接参数。

   2)    页面请求提交form表单

    3)   页面请求发送json数据,使用上下文对象c的BindJSON()方法接收数据

    4)    页面请求发送json数据,使用相应小写字段 结构体对象接收值。

 二、使用自定义的logger记录日志文件

       1)创建 自定义的logger.go文件   

         2)使用自定义logger

       1) 在common.go中文件写入logger.SimpleHttpGet()  :

        2)直接在路由请求调用的函数中写入logger.SimpleHttpGet()


     一、  从控制器中获取参数的几种形式

    1)  页面请求url直接拼接参数。

   2)    页面请求提交form表单

    3)   页面请求发送json数据,使用上下文对象c的BindJSON()方法接收数据

    4)    页面请求发送json数据,使用相应小写字段 结构体对象接收值。

 二、使用自定义的logger记录日志文件

       1)创建 自定义的logger.go文件   

package logger

import (
	"net/http"

	"github.com/natefinch/lumberjack"
	"go.uber.org/zap"
	"go.uber.org/zap/zapcore"
)

var sugarLogger *zap.SugaredLogger

//func main() {
//	InitLogger()
//	defer sugarLogger.Sync()
//	simpleHttpGet("https://www.baidu.com")
//	simpleHttpGet("https://c.runoob.com")
//}

func InitLogger() {
	writeSyncer := getLogWriter()
	encoder := getEncoder()
	core := zapcore.NewCore(encoder, writeSyncer, zapcore.DebugLevel)

	logger := zap.New(core)
	sugarLogger = logger.Sugar()
}

// func getEncoder() zapcore.Encoder {
// return zapcore.NewJSONEncoder(zap.NewProductionEncoderConfig())
// return zapcore.NewConsoleEncoder(zap.NewProductionEncoderConfig())
// }

func getEncoder() zapcore.Encoder {
	encoderConfig := zap.NewProductionEncoderConfig()
	encoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder
	encoderConfig.EncodeLevel = zapcore.CapitalLevelEncoder
	return zapcore.NewConsoleEncoder(encoderConfig)
}

// func getLogWriter() zapcore.WriteSyncer {
//如果想要追加写入可以查看我的博客文件操作那一章
// file, _ := os.Create("./test.log")
// return zapcore.AddSync(file)
// }

func getLogWriter() zapcore.WriteSyncer {
	lumberJackLogger := &lumberjack.Logger{
		Filename:   "./test.log",
		MaxSize:    1,
		MaxBackups: 5,
		MaxAge:     30,
		Compress:   false,
	}
	return zapcore.AddSync(lumberJackLogger)
}

func SimpleHttpGet(url string) {
	sugarLogger.Debugf("Trying to hit GET request for %s", url)
	resp, err := http.Get(url)
	if err != nil {
		sugarLogger.Errorf("Error fetching URL %s : Error = %s", url, err)
	} else {
		sugarLogger.Infof("Success! statusCode = %s for URL %s", resp.Status, url)
		resp.Body.Close()
	}
}

         2)使用自定义logger

       1) 在common.go中文件写入logger.SimpleHttpGet()  :

                每个url请求调用的函数最终调同到ReturnSuccess()函数

    logger.InitLogger()
	logger.SimpleHttpGet(c.Request.URL.Path)

        2)直接在路由请求调用的函数中写入logger.SimpleHttpGet()

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

面试场景题系列--(4)设计一个支持敏感数据存储和传输安全的加解密平台--xunznux

文章目录 设计一个支持敏感数据存储和传输安全的加解密平台1. 设计背景2. 需求分析日常开发中的加解密程序常见问题解决方案具体来说系统主要用例过程和功能系统需求 3. 概要设计3.1 部署模型3.2 加解密调用流程 4. 详细设计4.1 密钥领域模型4.2 核心服务类设计4.3 加解密数据接…

张量网络碎碎念:从 SO3 到 SO2

在上两篇文献中,我像大家介绍了 多通道 模型在 AI for Science 任务中的应用。核心思路类似 CV 中,将灰白单通道拓展到 RGB 多通道,能够提升图片表征能力。(见 图神经网络与分子表征:8. TFN)痛点在于张量积…

昇思25天学习打卡营第4天|基础知识-数据变换 Transforms

目录 数据变换 Transforms 环境 Common Transforms Compose Vision Transforms Rescale Normalize HWC2CHW Text Transforms PythonTokenizer Lookup Lambda Transforms 补充知识 map方法: lambda函数 filter() 函数 数据变换 Transforms 通常情况下&…

新手小白也能做!十大跨境电商平台推荐

梦想着将你的商品推向世界吗?跨境电商不仅是一门生意,更是一场文化和创新的交流。但作为新手,面对众多平台,你可能会有些迷茫。别担心,我们为你精选了几个全球知名的跨境电商平台,从入驻条件到开店成本&…

【windows11禁止自动更新(重启自动更新)】

第一种: 鼠标点击我的电脑点管理,然后就打开了计算机管理,将Windows Update改成禁用,然后确定,重启。 第二种方法: 下载地址:下载地址 下载好之后点击下载的那个应用程序**(点了之后就可以删掉了&#…

Mysql 输出本月初至当前的全部天数

代码&#xff1a; SELECT DATE_FORMAT(DATE_ADD(CONCAT(DATE_FORMAT(CURDATE(), "%Y-%m-01")),INTERVAL (CAST(help_topic_id AS SIGNED)) DAY),%Y-%m-%d) as DATE FROMmysql.help_topic WHERE help_topic_id < TIMESTAMPDIFF(DAY, CONCAT(DATE_FORMAT(CURDATE…

【软件测试】--接口测试

1. 接口用例设计 接口测试的测试点 功能测试 单接口功能&#xff1a; 手工测试中的单个业务模块&#xff0c;一般对应一个接口 登陆业务 --> 登陆接口加入购物车业务 --> 加入购物车接口订单业务 --> 订单接口支付业务 --> 支付接口 借助工具、代码。绕开前端界面…

Mybatis框架基础知识

Mybatis 1.1什么是Mybatis 1.MyBatis 是一款优秀的持久层框架&#xff0c;它支持自定义 SQL、存储过程以及高级映射。 2.MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。 3.MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO…

Celeron® J1900/N2807/2930 +FPGA PCI104模块,支持 WinXP(无硬件图形加速)操作系统、宽温

Celeron J1900/N2807/2930 PCI104模块 规格产品类型PCI 104 嵌入式主板芯片组SOCCPUIntel Celeron Processor J1900/N2807/2930内存板载2GB DDR3L双通道内存BIOSAMI 显示 L VDS 18/24-bit&#xff0c;VGA L VDS 支持最大分辨率为 1366768&#xff0c;VGA 支持最大分辨率为2048…

【分享】三种有效的PDF转Word技巧

在日常工作和学习中&#xff0c;有时我们需要将PDF文件转换为Word文档&#xff0c;或者转为Word文档后&#xff0c;可以更方便编辑和修改其内容。今天分享3个可以快速转换格式的工具&#xff0c;一起来看看吧&#xff01; 方法1&#xff1a;使用PDF编辑器 PDF编辑器一般具备格…

SpringBoot整合jasypt加密和解密yml配置文件

使用场景 在微服务架构中&#xff0c;配置管理是一个重要的问题。通常&#xff0c;我们会在配置文件中存放一些敏感信息&#xff0c;如数据库连接字符串、API 密钥等。这些敏感信息如果明文存储在配置文件中&#xff0c;存在较大的安全隐患。为了提高安全性&#xff0c;我们需…

虚拟串口下载破解

文章目录 文章介绍下载链接安装教程 文章介绍 下载虚拟串口并破解 下载链接 下载链接 安装教程 安装完成后不要运行&#xff0c;将Cracked中的文件复制 替换文件安装目录中的这两个文件

历史性突破:200层以上存储芯片率先量产,领先国外芯片巨头

中国芯片技术取得了历史性进展&#xff0c;我们已经可以率先实现200层以上存储芯片的量产&#xff0c;走在了国外存储芯片行业前列。 这一突破性的进展&#xff0c;有望使我们在全球芯片行业中占据领先地位。 后起之秀&#xff0c;鱼跃龙门 存储芯片的生产&#xff0c;不仅是…

三菱GX WORKS3中如何使用恒定周期程序实现定时中断?

三菱GX WORKS3中如何使用恒定周期程序实现定时中断? 如下图所示,打开GX WOKRS3新建一个项目,恒定周期项目树下,添加一个程序本体,在程序中编写简单的自加1指令INC, 如下图所示,在参数—CPU参数中找到 中断设置—恒定周期间隔设置,我这里使用的是I31定时中断,所以这里我…

浅入浅出MyBatis(二)简单实现MyBatis底层机制

MyBatis底层机制示意图 mybatis-config.xml mybatis-config.xml 是MyBatis全局配置文件&#xff0c;在项目中只能有一份。通过该配置文件可以得到SqlSessionFactory对象 SqlSessionFactory 通过SqlSessionFactory可以得到SqlSession&#xff0c;拿到SqlSession就可以操作数据…

【C语言】简易版扫雷游戏(数组、函数的练习)

目录 一、分析和设计 1.1、扫雷游戏的功能分析 1.2、文件结构设计&#xff08;多文件的练习&#xff09; 1.3、数据结构的设计 二、代码 三、效果展示 三、优化 一、分析和设计 1.1、扫雷游戏的功能分析 以在线版的扫雷游戏为参考&#xff0c;分析它的功能&#xff1a;扫…

JAVA中的多线程详解

1.概念 进程(Process)&#xff1a; 进程是一个包含自身执行地址的程序&#xff0c;多线程使程序可以同时存在多个执行片段&#xff0c;这些执行片段根据不同的条件和环境同步或者异步工作&#xff0c;由于转换的数独很快&#xff0c;使人感觉上进程像是在同时运行。 现在的计…

Kafka知识总结(事务+数据存储+请求模型+常见场景)

文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 事务 事务Producer保证消息写入分区的原子性&#xff0c;即这批消…

nodejs与npm版本对应表

Node.js — Node.js 版本 (nodejs.org)