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

crmeb多商户源码下载佛山百度关键词seo外包

crmeb多商户源码下载,佛山百度关键词seo外包,企业网站建设费用深圳,济南企业建站怎么样目录 一、Go 标准库 log 详解 1. 功能特点 2. 常用函数 3. 示例代码 4. 优势和局限 二、第三方库 logrus 详解 1. 功能特点 2. 核心功能 3. 示例代码 4. 优势和扩展性 三、总结 1. 何时选择 log? 2. 何时选择 logrus? 3. 对比总结 一、Go 标…

目录

一、Go 标准库 log 详解

1. 功能特点

2. 常用函数

3. 示例代码

4. 优势和局限

二、第三方库 logrus 详解

1. 功能特点

2. 核心功能

3. 示例代码

4. 优势和扩展性

三、总结

1. 何时选择 log?

2. 何时选择 logrus?

3. 对比总结


一、Go 标准库 log 详解

1. 功能特点

log 是 Go 语言标准库中一个简单的日志库,主要功能包括:

  • 写入日志到指定位置(默认为标准错误)
  • 支持_FATAL 和 _ERROR 等级别的日志
  • 支持格式化日志输出
2. 常用函数

log 包中常用的函数如下:

函数名功能
log.Print输出日志
log.Printf格式化输出日志
log.Println输出日志,自动换行
log.Fatal输出日志并调用 os.Exit(1)
log.Fatalf格式化输出日志并退出
log.Panic输出日志并引发 panic
log.Panicln格式化输出日志并引发 panic
log.SetFlags设置日志格式(日期、时间等)
log.SetOutput设置日志输出目标
3. 示例代码
package main  import (  "log"  "os"  
)  func main() {  // 1. 默认输出到标准错误  log.Println("这是一条普通日志")  // 2. 格式化输出  name := "Alice"  age := 30  log.Printf("用户 %s 已经 %d 岁了\n", name, age)  // 3. 设置日志输出目标为文件  file, err := os.OpenFile("log.txt", os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0644)  if err != nil {  log.Fatal(err)  }  log.SetOutput(file)  log.Println("日志已切换到文件输出")  // 4. 设置日志格式(默认包含时间信息)  log.SetFlags(log.LstdFlags)  //Ldate         = 1 << iota     // 使用本地时区的日期:2009/01/23//Ltime                         // 使用本地时区的时间:01:23:23//Lmicroseconds                 // 微秒精度的时间:01:23:23.123123。假设启用了Ltime//Llongfile                     // 完整文件名和行号:/a/b/c/d.go:23//Lshortfile                    // 文件名的最后一部分和行号:d.go:23。覆盖Llongfile//LUTC                          // 如果设置了Ldate或Ltime,则使用UTC而不是本地时区//Lmsgprefix                    // 将“前缀”从行首移动到消息之前//LstdFlags     = Ldate | Ltime // 标准logger的初始值,包含日期和时间log.Println("这是一条包含时间的日志")  log.Panic("Panic\n")//log.Fatal("Fatal\n")
}  
4. 优势和局限
  • 优势
    • 内置库,使用简单,不需要额外依赖。
    • 支持基本的日志输出和格式化。
  • 局限
    • 功能较简单,不支持多日志级别(如 DEBUG、INFO、WARNING 等)。
    • 不支持 JSON 格式化输出。
    • 不支持日志轮转(logrotate)。

二、第三方库 logrus 详解

1. 功能特点

logrus 是 Go 语言中一个功能强大的日志库,主要特点如下:

  • 支持多种日志级别:DebugInfoWarningErrorFatalPanic
  • 支持两种输出格式:text 和 json
  • 支持日志轮转(结合 lumberjack 包)
  • 支持钩子(Hooks)机制,扩展日志处理逻辑
  • 支持多种输出目标(文件、网络、console 等)
2. 核心功能

以下是 logrus 的核心功能:

          1 .多日志级别

logger.Debug("调试日志")  
logger.Info("信息日志")  
logger.Warn("警告日志")  
logger.Error("错误日志")  
logger.Fatal("致命错误")  
logger.Panic("panic 日志")  

        2. 格式化输出

logger.WithFields(logrus.Fields{  "username": "Alice",  "age":       30,  
}).Info("用户信息")  

        3. 切换输出格式

// 切换到 JSON 格式  
logger.SetFormatter(&logrus.JSONFormatter{})  
// 配置日志格式为 text(默认)
//logger.SetFormatter(&logrus.TextFormatter{})

        4.设置日志输出目标

logger.SetOutput(os.Stdout) // 输出到标准输出  

        5. 日志轮转(结合 lumberjack)

// 须import(lumberjack "gopkg.in/natefinch/lumberjack.v2"
)
writer := &lumberjack.Logger{  Filename:   "logs/app.log",  MaxSize:     500, // MB  MaxBackups:  3,  MaxAge:      28, // days  Compress:   true,  
}  
logger.SetOutput(writer)  
3. 示例代码

以下是一个完整的 logrus 示例代码,包含日志级别、格式化、文件轮转和钩子功能:

package main  import (  "log"  "os"  "os/signal"  "syscall"  "time"  lumberjack "gopkg.in/natefinch/lumberjack.v2" "github.com/sirupsen/logrus"  
)  func main() {  // 1. 创建 logger 实例  logger := logrus.New()  // 2. 配置日志级别  logger.SetLevel(logrus.InfoLevel)  // 3. 配置日志格式为 JSON  logger.SetFormatter(&logrus.JSONFormatter{})  // 4. 配置日志轮转  writer := &lumberjack.Logger{  Filename:   "logs/app.log",  MaxSize:     500, // MB  MaxBackups:  3,  MaxAge:      28, // days  Compress:   true,  }  logger.SetOutput(writer)  // 5. 添加钩子(Hook)  logger.AddHook(&MyHook{})  // 6. 写入日志  logger.Info("这是一个 Info 级别的日志")  // 7. 带字段的日志  logger.WithFields(logrus.Fields{  "username": "Bob",  "age":      25,  }).Error("用户未找到")  // 8. 处理信号  signalChan := make(chan os.Signal, 1)  signal.Notify(signalChan, syscall.SIGINT, syscall.SIGTERM)  go func() {  <-signalChan  logger.Info("程序已优雅退出")  os.Exit(0)  }()  
}  // 自定义钩子示例  
type MyHook struct{}  func (*MyHook) Levels() []logrus.Level {  return []logrus.Level{  logrus.InfoLevel,  logrus.ErrorLevel,  }  
}  func (*MyHook) Fire(entry *logrus.Entry) error {  // 钩子逻辑:例如发送日志到远程服务器  log.Printf("钩子处理:%+v\n", entry)  return nil  
}  
4. 优势和扩展性
  • 优势
    • 功能强大,支持多日志级别和格式化。
    • 高度可定制,支持钩子机制和多种输出目标。
    • 社区生态丰富,广泛应用于生产环境。
  • 扩展性
    • 支持第三方库扩展(如日志轮转、网络输出等)。

三、总结

1. 何时选择 log
  • 当项目的日志需求简单(只需要基本的日志输出)。
  • 项目不希望引入额外的依赖。
2. 何时选择 logrus
  • 项目需要多日志级别和格式化输出。
  • 需要更高的可定制性和扩展性。
  • 需要支持日志轮转和钩子机制。
3. 对比总结
特性loglogrus
日志级别有限(Fatal、Error)多级别(Debug~Panic)
格式化输出支持支持(Text/JSON)
日志轮转不支持支持(需配合 lumberjack)
钩子机制不支持支持
输出目标标准输出/文件多种(文件、网络等)
社区和扩展性内置库第三方库,社区丰富

http://www.dtcms.com/wzjs/476328.html

相关文章:

  • 建设企业官方网站企业登录百度引擎搜索网址
  • 怎么破解网站后台博为峰软件测试培训学费
  • 滨州哪里做网站易思企业网站管理系统
  • 做英文网站费用多少武汉seo技术
  • paypal未满十八岁怎么开如何做seo
  • 做图表的网站 免费seo网站推广价格
  • 六安网站制作中南建设集团有限公司
  • 网络工程师主要做什么seo优化公司信
  • 如何在图片上做网站水印图品牌营销策略论文
  • 站长之家源码下载百度一下你就知道下载安装
  • 在线做动漫图的网站百度关键词排名工具
  • 大连模板网站制作公司关键词整站优化公司
  • 上海公司网站制作价格aso优化服务
  • 做企业网站需要多久如何自己制作网站
  • 网站带做收录排名中国站长
  • 河北廊坊疫情通报什么是搜索引擎优化seo
  • 学java哪个培训学校最好怎么优化自己公司的网站
  • 烟台专业做网站公司哪家好app代理推广平台
  • 遵义网站建设培训百度搜索引擎收录
  • 十大购物网站排名上海百度推广电话客服
  • 普通网站怎么做h5百度收录批量提交入口
  • 苏州市住房建设局网站首页厦门seo
  • 网站开发软件最流行免费seo营销软件
  • 网站推荐几个网站建设的数字化和互联网化
  • 公众号运营平台产品seo基础优化
  • b2c网站建设费用新东方教育培训机构
  • 怎么做提卡密网站万游百度登录页面
  • 广州做营销型网站下载百度极速版
  • 西昌有没有可以做网站的公司深圳网站制作
  • 伍佰亿网站备案收费外贸网站建设优化推广