教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 使用 Go 记录日志

使用 Go 记录日志

发布时间:2022-01-20   编辑:jiaochengji.com
教程集为您提供使用 Go 记录日志等资源,欢迎您收藏本站,我们将为您提供最新的使用 Go 记录日志资源
<ul><li>简介</li> <li>定义配置</li> <li>读取日志相关的配置</li> <li>总结</li> <li>当前部分的代码</li> </ul><h2>简介</h2>

在上一节内容中, 我们使用 viper 读取了配置文件.

本节将使用 logrus 记录日志.

logrus 是一个结构化的日志记录器, 和标准库中的 logger 具有完全兼容的 API.

<h2>定义配置</h2>

首先, 更新一下配置文件, 加入以下参数:

<pre><code class="yaml">log: use_json: true logger_level: debug logger_file: log/server.log gin_file: log/gin.log gin_console: true</code></pre>

logrus 支持使用 JSON 格式记录日志:

<pre><code class="go">logrus.SetFormatter(&log.JSONFormatter{})</code></pre>

第二三参数设置了日志的记录级别和日志保存路径,
最后两个参数是 gin 的日志设置参数.

<h2>读取日志相关的配置</h2> <pre><code class="go">// 初始化日志 func (c *Config) InitLog() { // log.use_json if viper.GetBool("log.use_json") { logrus.SetFormatter(&logrus.JSONFormatter{}) } // log.logger_level switch viper.GetString("log.logger_level") { case "trace": logrus.SetLevel(logrus.TraceLevel) case "debug": logrus.SetLevel(logrus.DebugLevel) case "info": logrus.SetLevel(logrus.InfoLevel) case "warn": logrus.SetLevel(logrus.WarnLevel) case "error": logrus.SetLevel(logrus.ErrorLevel) } // log.logger_file logger_file := viper.GetString("log.logger_file") os.MkdirAll(filepath.Dir(logger_file), os.ModePerm) file, err := os.OpenFile(logger_file, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0666) if err == nil { logrus.SetOutput(file) } // log.gin_file & log.gin_console gin_file := viper.GetString("log.gin_file") os.MkdirAll(filepath.Dir(gin_file), os.ModePerm) file, err = os.OpenFile(gin_file, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0666) if err == nil { if viper.GetBool("log.gin_console") { gin.DefaultWriter = io.MultiWriter(file, os.Stdout) } else { gin.DefaultWriter = io.MultiWriter(file) } } // default logrus.SetReportCaller(true) }</code></pre>

这方法就是读取了日志相关的配置参数, 然后调用对应的方法.

那么在哪里调用这个方法呢?

目前我是在 <code>initConfig</code> 中调用的, 这使得日志配置在初始化时就固定了,
因此当调整配置文件时不会影响日志相关的配置.

如果需要实时更新日志配置, 可以考虑放在 <code>runServer</code> 中.

<h2>总结</h2>

和原作者不同的地方在于, 我没有考虑日志的压缩与转储.

另外一点是没有统一处理 gin 的日志, 选择了分散处理.

<h2>当前部分的代码</h2>

作为版本 v0.3.0

到此这篇关于“使用 Go 记录日志”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
Laravel 集成的 Monolog 库对日志进行配置和记录实例
使用 Go 记录日志
GO语言-文件版日志系统
golang日志服务器_深扒GO日志 | (一)从Go语言的日志包说起
如何开启mysql和php慢日志
Servlet Tomcat如何输出日志?
golang 日志分析_每日一库之 logrus 日志使用教程
Go进阶45:Golang简洁的日志收集系统(替代ELKB)
PHP记录和读取JSON格式日志文件
删除及设置linux日志笔记

[关闭]
~ ~