当前位置: 首页 > news >正文

北京东直门 网站建设做海岛旅游类网站的背景及意义

北京东直门 网站建设,做海岛旅游类网站的背景及意义,wordpress怎样建立二级菜单,网站跳转代码 htmlGolang 操作 Logger、Zap Logger 日志_golang zap-CSDN博客 目录 一、 从控制器中获取参数的几种形式 1#xff09; 页面请求url直接拼接参数。 2#xff09; 页面请求提交form表单 3#xff09; 页面请求发送json数据#xff0c;使用上下文对象c的BindJSON()方法接… 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() 三) 再次自定义logger 使用自定义logger函数 一、  从控制器中获取参数的几种形式 1  页面请求url直接拼接参数。    2    页面请求提交form表单     3   页面请求发送json数据使用上下文对象c的BindJSON()方法接收数据     4    页面请求发送json数据使用相应小写字段 结构体对象接收值。 二、使用自定义的logger记录日志文件 1创建 自定义的logger.go文件    package loggerimport (net/httpgithub.com/natefinch/lumberjackgo.uber.org/zapgo.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.ISO8601TimeEncoderencoderConfig.EncodeLevel zapcore.CapitalLevelEncoderreturn 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() 三) 再次自定义logger package loggerimport (fmtgithub.com/gin-gonic/gingithub.com/sirupsen/logrusionet/httpospathruntime/debugtime )func init() {// 设置日志格式为json格式logrus.SetFormatter(logrus.JSONFormatter{TimestampFormat: 2006-01-02 15:04:05,})logrus.SetReportCaller(false) }func Write(msg string, filename string) {setOutPutFile(logrus.InfoLevel, filename)logrus.Info(msg) }func Debug(fields logrus.Fields, args ...interface{}) {setOutPutFile(logrus.DebugLevel, debug)logrus.WithFields(fields).Debug(args) }func Info(fields logrus.Fields, args ...interface{}) {setOutPutFile(logrus.InfoLevel, info)logrus.WithFields(fields).Info(args) }func Warn(fields logrus.Fields, args ...interface{}) {setOutPutFile(logrus.WarnLevel, warn)logrus.WithFields(fields).Warn(args) }func Fatal(fields logrus.Fields, args ...interface{}) {setOutPutFile(logrus.FatalLevel, fatal)logrus.WithFields(fields).Fatal(args) }func Error(fields logrus.Fields, args ...interface{}) {setOutPutFile(logrus.ErrorLevel, error)logrus.WithFields(fields).Error(args) }func Panic(fields logrus.Fields, args ...interface{}) {setOutPutFile(logrus.PanicLevel, panic)logrus.WithFields(fields).Panic(args) }func Trace(fields logrus.Fields, args ...interface{}) {setOutPutFile(logrus.TraceLevel, trace)logrus.WithFields(fields).Trace(args) }func setOutPutFile(level logrus.Level, logName string) {if _, err : os.Stat(./runtime/log); os.IsNotExist(err) {err os.MkdirAll(./runtime/log, 0777)if err ! nil {panic(fmt.Errorf(create log dir %s error: %s, ./runtime/log, err))}}timeStr : time.Now().Format(2006-01-02)fileName : path.Join(./runtime/log, logName_timeStr.log)var err erroros.Stderr, err os.OpenFile(fileName, os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0644)if err ! nil {fmt.Println(open log file err, err)}logrus.SetOutput(os.Stderr)logrus.SetLevel(level)return }func LoggerToFile() gin.LoggerConfig {if _, err : os.Stat(./runtime/log); os.IsNotExist(err) {err os.MkdirAll(./runtime/log, 0777)if err ! nil {panic(fmt.Errorf(create log dir %s error: %s, ./runtime/log, err))}}timeStr : time.Now().Format(2006-01-02)fileName : path.Join(./runtime/log, success_timeStr.log)os.Stderr, _ os.OpenFile(fileName, os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0644)var conf gin.LoggerConfig{Formatter: func(param gin.LogFormatterParams) string {return fmt.Sprintf(%s - %s \%s %s %s %d %s \%s\ %s\\n,param.TimeStamp.Format(2006-01-02 15:04:05),param.ClientIP,param.Method,param.Path,param.Request.Proto,param.StatusCode,param.Latency,param.Request.UserAgent(),param.ErrorMessage,)},Output: io.MultiWriter(os.Stdout, os.Stderr),}return conf }func Recover(c *gin.Context) {defer func() {if err : recover(); err ! nil {if _, errDir : os.Stat(./runtime/log); os.IsNotExist(errDir) {errDir os.MkdirAll(./runtime/log, 0777)if errDir ! nil {panic(fmt.Errorf(create log dir %s error: %s, ./runtime/log, errDir))}}timeStr : time.Now().Format(2006-01-02)fileName : path.Join(./runtime/log, error_timeStr.log)f, errFile : os.OpenFile(fileName, os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0644)if errFile ! nil {fmt.Println(errFile)}timeFileStr : time.Now().Format(2006-01-02 15:04:05)f.WriteString(panic error time: timeFileStr \n)f.WriteString(fmt.Sprintf(%v, err) \n)f.WriteString(stacktrace from panic: string(debug.Stack()) \n)f.Close()c.JSON(http.StatusOK, gin.H{code: 500,msg: fmt.Sprintf(%v, err),})//终止后续接口调用不加的话recover到异常后还会继续执行接口里后续代码c.Abort()}}()c.Next() }使用自定义logger函数
http://www.dnsts.com.cn/news/257014.html

相关文章:

  • 网站开发项目延期说明景观毕业设计作品网站
  • 做网站美工 电脑配件要多大云南网官网入口
  • 自己建网站做电商还赚钱吗lamp网站建设
  • 中文绿色环保网站模板微信营销软件破解版
  • 专业网站建设套餐网络营销推广是什么
  • 网站集约整合建设交流网址站长之家
  • 站长工具收录什么网站可以做翻译兼职
  • 太原关键词网站排名深圳室内设计公司50强
  • 网页设计与制作课程标准化项目申报书seo短视频网页入口引流下载
  • 网上购物最便宜的网站自己电脑做网站 外网无法访问
  • 网站放自己服务器备案政务网站群建设需求调研表
  • 购买网站源码注意事项新闻热点事件及评论
  • 网站建设wesnowsat微信官方网站登陆
  • hge网站做微端有没有做外贸的网站啊
  • 怎么下载网站的模板984网站建设项目
  • 丹东市网站开发公司网站开发代码归属
  • 程序员做的简单的网站wordpress 缩进
  • 广州手机网站定制信息网站开发工程师 招聘
  • h5网站还有哪些qq网页版在线登录
  • 浙江手机版建站系统哪个好锦州网站建设品牌
  • 电商网站服务器婚庆公司网站模板下载
  • 营销代码查询seo优化策略
  • 阿里云网站申请用途工作室网站需要备案吗
  • 做的网站百度找不到了站群管理系统cms
  • 遵义企业做网站wordpress转发微信
  • 国外免费源码共享网站百度一下网页搜索
  • 做水果的有什么网站装修设计公司网站
  • 企业网站的制作哪家好网站制作技术支持
  • 新闻类网站怎么做百度推广东莞网站seo推广
  • wordpress域名改了苏州seo排名优化费用