go自定义日志

代码小白一个,可能代码有多处漏洞,欢迎留言-

mian.go文件

func main() {_, err := os.OpenFile("", os.O_RDWR, 0666)//log.SetFile("./log/error.log")log.Error("出错啦: ", err)log.WriteReqError(errors.Wrap(err, "不小心出错了"), nil)
}

log.go文件

package logimport ("fmt""github.com/gin-gonic/gin""os""sync""time"
)const (_ = iotaLevel_InfoLevel_DebugLevel_ErrorLevel_Warn
)var wg sync.WaitGroup
var log *Logfunc init() {log = &Log{file: "./log/error.log"} // 默认日志文件路径
}type Log struct {file string
}func Info(v ...interface{}) {log.outPut(Level_Info, v...)
}
func Debug(v ...interface{}) {log.outPut(Level_Debug, v...)
}
func Error(v ...interface{}) {log.outPut(Level_Error, v...)
}
func Warn(v ...interface{}) {log.outPut(Level_Warn, v...)
}// SetFile 设置日志文件路径
func SetFile(file string) {log.file = file
}// WriteReqError 写入请求类日志
func WriteReqError(error error, c *gin.Context) {log.requestPut(error, c)
}func (l *Log) outPut(level int, v ...interface{}) {wg.Add(1)go func() {defer wg.Done()str := time.Now().Format("2006-01-02 15:04:05 [")switch level {case Level_Info:str += "INFO"breakcase Level_Debug:str += "DEBUG"breakcase Level_Error:str += "ERROR"breakcase Level_Warn:str += "WARN"break}str += "] " + fmt.Sprint(v...) + "\n"fmt.Print(str)l.openFile(str)}()wg.Wait()
}func (l *Log) requestPut(err error, c *gin.Context) {wg.Add(1)go func() {defer wg.Done()str := time.Now().Format("2006-01-02 15:04:05 [ERROR] ")if c != nil {str = fmt.Sprintf("%s\n请求地址:%s\n请求方式:%s\n请求ip:%s\n", str,c.Request.RequestURI,c.Request.Method,c.ClientIP())}if err != nil {str = fmt.Sprintf("%s%s\n", str, err)}fmt.Print(str)l.openFile(str)}()wg.Wait()
}func (l *Log) openFile(msg string) {f, err := os.OpenFile(l.file, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)if err != nil {fmt.Println("日志文件打开失败:", err)return}defer f.Close()_, err = f.WriteString(msg)if err != nil {fmt.Println("文件写入失败:", err)return}
}

微信号: cloud-month ,欢迎一起学习交流技术问题

golang 自定义日志相关推荐

  1. golang xorm 自定义日志记录器,使用zap实现日志输出、切割日志

    目录 1.准备并下载好需要的包 2. 连接postgresql数据库 3. zap日志工具 4.实现xorm 自定义日志记录器 5.使用 完整代码 1.准备并下载好需要的包 xorm.io/xorm ...

  2. Golang学习日志 ━━ LiteIDE的主要配置

    用LiteIDE开发golang半年换到VSCode,vs用了一年多后,最近又用回LiteIDE,感觉还是针对性强的IDE用起来舒适,界面什么不重要. 我个人一般什么东西都喜欢用默认配置,能不改的就不 ...

  3. golang logrus日志框架

    golang logrus日志框架 logrus自定义log 日志 废话不多说,直接举个栗子 package mainimport ("fmt""github.com/g ...

  4. ATS 5.3.0中自定义日志格式文件logs_xml.config解读

    缘起 近来因为公司项目需要,阅读了一部分ATS logging system的源码实现,越发觉得logs_xml.config文件的配置非常重要,而我目前只是实践了一点它的皮毛.为此,根据自己的理解, ...

  5. ATS 4.2.3自定义日志文件格式的方法

    我只是总结归纳了别人的方法,并做了实际验证,在这里记录一下,以备大家参考,向参考文献中的各位前辈致敬. ATS默认的日志格式是squid.log,我们可以在/var/log/trafficserver ...

  6. log4cplus使用(二)-自定义日志等级

    log4cplus支持用户自定义日志等级,操作也比较简单,使用之前贴如下宏定义 #define LOG4CPLUS_MACRO_CREASH_LOG_LEVEL(pred) LOG4CPLUS_UNL ...

  7. golang应用日志

    seelog介绍 seelog是用Go语言实现的一个日志系统,它提供了一些简单的函数来实现复杂的日志分配.过滤和格式化.主要有如下特性: XML的动态配置,可以不用重新编译程序而动态的加载配置信息 支 ...

  8. gin自定义日志格式

    gin自定义日志格式 func main() {router := gin.New()// LoggerWithFormatter 中间件会将日志写入 gin.DefaultWriter// By d ...

  9. java自定义日志级别_自定义log4j日志级别

    因为项目中需要输出一些特别的日志来做数据统计.如果开启log4j提供的INFO日志级别,每天生成的日志文件就会变得越来越大.这样就得写个定 时任务来删除这个文件.为了只输出所需的日志级别,唯有自己定义 ...

最新文章

  1. char添加一个字符_C语言动态接收多个字符串
  2. [转]C#多线程编程实例实战
  3. 在wince中添加微软的雅黑字体
  4. iOS最为简单时间轴(GZTimeLine)
  5. 海量数据库的查询优化及分页算法方案(3)--改善SQL语句[转]
  6. 悲剧!他写了20000行代码,却连6岁孩子都比不过!
  7. 服务器CPU X86 ARM PowerPC RISC介绍
  8. 桃养人,杏害人,樱桃树下埋死人
  9. 免费的ERP软件哪一款好用?这3款让综合管理更高效
  10. 优质的游戏音效推荐,不容错过
  11. 含泪推荐四款超级好用的电脑软件,值得收藏
  12. NCA(Neighborhood Components Analysis)
  13. 射频天线设计-Г、RL、VSWR、S
  14. ios pod的使用遇到 library not found for -lPods
  15. Linux内核的VGA模式对照表
  16. 机器学习、人工智能、深度神经网络和神经网络,四个概念之间有什么关系?
  17. 集成OpenLDAP与Kerberos实现统一认证(一):整合后台数据库
  18. 更改powshell默认路径,快速定制个性化的powshell启动方式
  19. Spring Cloud Nacos笔记
  20. 京东互保下线,阿里相互保无奈更名,巨头进军保险动了谁的奶酪?

热门文章

  1. 使用 Cobertura 和反射机制提高 Java 单元测试中的代码覆盖率
  2. php tcpdf 没有头部,TCPDF使用总结 - 从头笑到尾的个人空间 - OSCHINA - 中文开源技术交流社区...
  3. 数仓和数据中台长期霸权,数据湖最稳
  4. CSS实现当鼠标移入或者移出时实现动画过渡效果
  5. Python代码画圣诞树--turtle绘图
  6. python求txt文件内平均值_如何使用python计算几个.dat文件的平均值?
  7. 纯干货!埃森哲的大数据分析框架分享-part 1
  8. 奇葩Bug频出,苹果AirPods Pro 2提醒用户换电池
  9. KDZD608屏蔽服效率测试仪
  10. SpringBoot整合Prometheus实现业务指标上报