iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > GO >如何在golang中使用logger日志包
  • 895
分享到

如何在golang中使用logger日志包

2023-06-14 22:06:55 895人浏览 八月长安
摘要

这篇文章给大家介绍如何在golang中使用logger日志包,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Golang的优点golang是一种编译语言,可以将代码编译为机器代码,编译后的二进制文件可以直接部署到目标机器

这篇文章给大家介绍如何在golang中使用logger日志包,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

Golang的优点

golang是一种编译语言,可以将代码编译为机器代码,编译后的二进制文件可以直接部署到目标机器而无需额外的依赖,所以golang的性能优于其他的解释性语言,且可以在golang中使用goroutine来实现并发性,它提供了一个非常优雅的goroutine调度程序系统,可以很容易地生成数百万个goroutine。

1. logger包介绍

import  "GitHub.com/wonderivan/logger"

在我们开发go程序的过程中,发现记录程序日志已经不是fmt.print这么简单,我们想到的是打印输出能够明确指定当时运行时间、运行代码段,当然我们可以引入go官方自带包 import “log”,然后通过log.Printf、log.Println等方式输出,而且默认是日志输出时只带时间的,想要同时输出所运行代码段位置,还需要通过执行一下指定进行相关简单的设置

log.SetFlags(log.LstdFlags | log.Lshortfile)log.SetPrefix(xxx)

然而logger要做的并不仅仅是要这些:

logger支持自定义时间格式

logger支持不同的日志等级输出,能够有效提高日志输出性能和检索;

logger支持控制台+文件+网络的三种方式输出,并且可以任意组合。

logger支持控制台输出颜色区分;

logger支持文本输出的自定制;

logger支持网络日志传输,例如直连logstash发送。

2. logger包使用

logger包使用起来非常方便,很多配置参数都有其默认值,符合通常使用习惯。如果仅需要在控制台输出,则只需要引入该包,然后直接使用即可:

package main import "github.com/wonderivan/logger" func main() { logger.Trace("this is Trace") // 由于默认输出,只会在控制台输出Debug及其以上日志,所以该条不会输出 logger.Debug("this is Debug") logger.Info("this is Info") logger.Warn("this is Warn") logger.Error("this is Error") logger.Crit("this is Critical") logger.Alert("this is Alert") logger.Emer("this is Emergency")}

此时在终端即可输出(如果是非windows终端,支持日志等级颜色区分):

如何在golang中使用logger日志包

3. logger详细介绍

在上边介绍了logger的基本使用后,接下来详细介绍一下该包的文本输出和网络输出,及其相关配置项。

3.1 日志等级

当前日志输出等级共8种,从0-7对应的等级由高到底,可以通过配置参数进行配置,默认为DEBG级别,当配置为某个输出等级时,只有大于等于该等级的日志才会输出。不同的输出适配器支持不同的日志等级配置。

logger日志等级列表
等级配置释义控制台颜色
0EMER系统级紧急,比如磁盘出错,内存异常,网络不可用等红色底
1ALRT系统级警告,比如数据库访问异常,配置文件出错等紫色
2CRIT系统级危险,比如权限出错,访问异常等蓝色
3EROR用户级错误红色
4WARN用户级警告黄色
5INFO用户级重要天蓝色
6DEBG用户级调试绿色
7TRAC用户级基本输出,比如成员信息,结构体值等绿色

3.2 配置参数说明

logger当前支持控制台、文件、网络3种方式输出,这3中输出时通过各自的JSON格式参数进行设置,如果未配置某项适配器时,则不初始化也不会输出到该适配器。

默认配置为只控制台输出DEBG及其以上日志。

{    "TimeFORMat":"2006-01-02 15:04:05", // 输出日志开头时间格式    "Console": {            // 控制台日志配置        "level": "TRAC",    // 控制台日志输出等级        "color": true       // 控制台日志颜色开关     },    "File": {                   // 文件日志配置        "filename": "app.log",  // 初始日志文件名        "level": "TRAC",        // 日志文件日志输出等级        "daily": true,          // 跨天后是否创建新日志文件,当append=true时有效        "maxlines": 1000000,    // 日志文件最大行数,当append=true时有效        "maxsize": 1,           // 日志文件最大大小,当append=true时有效        "maxdays": -1,          // 日志文件有效期        "append": true,         // 是否支持日志追加        "permit": "0660"        // 新创建的日志文件权限属性    },    "Conn": {                       // 网络日志配置        "net":"tcp",                // 日志传输模式        "addr":"10.1.55.10:1024",   // 日志接收服务器        "level": "Warn",            // 网络日志输出等级        "reconnect":true,           // 网络断开后是否重连        "reconnectOnMsg":false,     // 发送完每条消息后是否断开网络    }}

输出日志开头时间格式只要该符合go中Time.Format格式即可,例如:

时间类型时间格式
ANSIC"Mon Jan _2 15:04:05 2006"
UnixDate"Mon Jan _2 15:04:05 MST 2006"
RubyDate"Mon Jan 02 15:04:05 -0700 2006"
RFC822"02 Jan 06 15:04 MST"
RFC822Z"02 Jan 06 15:04 -0700"
RFC850"Monday, 02-Jan-06 15:04:05 MST"
RFC1123"Mon, 02 Jan 2006 15:04:05 MST"
RFC1123Z"Mon, 02 Jan 2006 15:04:05 -0700"
RFC3339"2006-01-02T15:04:05Z07:00"
RFC3339Nano"2006-01-02T15:04:05.999999999Z07:00"
Kitchen"3:04PM"
Stamp"Jan _2 15:04:05"
StampMilli"Jan _2 15:04:05.000"
StampMicro"Jan _2 15:04:05.000000"
StampNano"Jan _2 15:04:05.000000000"
RFC3339Nano1"2006-01-02 15:04:05.999999999 -0700 MST"
DEFAULT"2006-01-02 15:04:05"

对应的输出开头时间格式为:

========RFC1123Z time format========                                                         Thu, 02 Aug 2018 18:48:04 +0800 [DEBG] [github.com/wonderivan/logger/log_test.go:115] Debug R========Stamp time format========                                                            Aug  2 18:48:04 [DEBG] [github.com/wonderivan/logger/log_test.go:115] Debug Stamp            ========StampMilli time format========                                                       Aug  2 18:48:04.489 [DEBG] [github.com/wonderivan/logger/log_test.go:115] Debug StampMilli   ========StampNano time format========                                                        Aug  2 18:48:04.490002155 [DEBG] [github.com/wonderivan/logger/log_test.go:115] Debug StampNa========RubyDate time format========                                                         Thu Aug 02 18:48:04 +0800 2018 [DEBG] [github.com/wonderivan/logger/log_test.go:115] Debug Ru========RFC822 time format========                                                           02 Aug 18 18:48 CST [DEBG] [github.com/wonderivan/logger/log_test.go:115] Debug RFC822       ========RFC822Z time format========                                                          02 Aug 18 18:48 +0800 [DEBG] [github.com/wonderivan/logger/log_test.go:115] Debug RFC822Z    ========RFC1123 time format========                                                          Thu, 02 Aug 2018 18:48:04 CST [DEBG] [github.com/wonderivan/logger/log_test.go:115] Debug RFC========RFC3339 time format========                                                          2018-08-02T18:48:04+08:00 [DEBG] [github.com/wonderivan/logger/log_test.go:115] Debug RFC3339========RFC3339Nano time format========                                                      2018-08-02T18:48:04.490377325+08:00 [DEBG] [github.com/wonderivan/logger/log_test.go:115] Deb========ANSIC time format========                                                            Thu Aug  2 18:48:04 2018 [DEBG] [github.com/wonderivan/logger/log_test.go:115] Debug ANSIC   ========UnixDate time format========                                                         Thu Aug  2 18:48:04 CST 2018 [DEBG] [github.com/wonderivan/logger/log_test.go:115] Debug Unix========RFC850 time format========                                                           Thursday, 02-Aug-18 18:48:04 CST [DEBG] [github.com/wonderivan/logger/log_test.go:115] Debug ========Kitchen time format========                                                          6:48PM [DEBG] [github.com/wonderivan/logger/log_test.go:115] Debug Kitchen                   ========StampMicro time format========                                                       Aug  2 18:48:04.490662 [DEBG] [github.com/wonderivan/logger/log_test.go:115] Debug StampMicro

3.3 设置配置参数:

通过调用logger.SetLogger(config string)方法设置参数,config支持json配置,也支持指定内容为json配置的文件路径,例如:

// 通过配置参数直接配置    logger.SetLogger(`{"Console": {"level": "DEBG"}}`)    // 通过配置文件配置    logger.SetLogger("/home/log.json")

3.4 配置其他相关说明

当日志文件配置项append为true时,如果当前写入的日志发生跨天(daily为true)或超过最大限制时,会创建一个新文件,原有文件格式被重命名为: ****.xxxx-xx-xx.xxx.xxx 格式,例如:当向app.log写入日志时,触发了创建新文件操作,则将app.log重命名为 app.2018-01-01.001.log, 如果此时app.2018-01-01.001.log已经存在,则将刚才的app.log重命名为 app.2018-01-01.002.log,以此类推。

logger package默认初始化了全局的defaultLogger,所以直接调用logger.SetLogger的其实是给该对象设置输出参数,如果想要使用自定义的logger对象,需要通过logger.NewLogger()进行初始化。

网络配置中的reconnectOnMsg为true时,每条发送一条消息都会重连一次网络日志中心,适用于写日志频率极低的情况下的调用,可以减少长时间网络连接而占用资源。但强烈不建议平常使用时设置为true,这将会导致调用方反复的网络重连,极大增加资源消耗和延迟。

conn网络输出适配器经过elk集成环境的测试验证,通过该方式发送的日志,能够正常通过Elecsearch和Kibana检索和分析

4 下载和使用

保证golang开发环境的正常配置,并且go相关工具安装完成,GOPATH等设置正常(go开发所必须的)。

执行go get github.com/wonderivan/logger , 然后import 该包即可使用。

关于如何在golang中使用logger日志包就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

您可能感兴趣的文档:

--结束END--

本文标题: 如何在golang中使用logger日志包

本文链接: https://www.lsjlt.com/news/275689.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何在golang中使用logger日志包
    这篇文章给大家介绍如何在golang中使用logger日志包,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。golang的优点golang是一种编译语言,可以将代码编译为机器代码,编译后的二进制文件可以直接部署到目标机器...
    99+
    2023-06-14
  • golang日志包logger的用法详解
    1. logger包介绍 import "github.com/wonderivan/logger" 在我们开发go程序的过程中,发现记录程序日志已经不是fmt.print这...
    99+
    2024-04-02
  • golang默认Logger日志库在项目中使用Zap日志库
    目录在Go语言项目中使用Zap日志库介绍默认的Go Logger日志库实现Go Logger设置Logger使用LoggerLogger的运行Go Logger的优势和劣势优势劣势U...
    99+
    2024-04-02
  • 如何在 Go语言中使用日志包
    目录Go 语言标准库之log 包如何将日志消息存储在 Go 中的文件中定制你的日志记录器总结引言: 在我们的日常编程中,日志很重要。只要是我们写代码,就有可能出现 Bug。日志文件就...
    99+
    2024-04-02
  • 如何在 Go 中使用“slog”包检索日志级别?
    问题内容 我目前正在使用 Go 开发一个项目,我已经使用“slog”包设置了日志记录,但我无法弄清楚如何以编程方式检索当前日志级别。 我想使用类似的东西: lvl := slog.Ge...
    99+
    2024-02-12
  • 如何在Java容器中使用npm包记录日志?
    Java容器是一个流行的平台,用于开发和运行大型企业应用程序。在Java应用程序中,记录日志是非常重要的,因为它可以帮助开发者快速诊断和解决应用程序中的问题。npm是一个流行的包管理器,用于管理JavaScript包。在本文中,我们将介绍如...
    99+
    2023-07-27
    npm 日志 容器
  • 如何使用 Go 打包 HTTP 日志?
    Go 作为一种高效、易用的编程语言,已经被广泛应用于 Web 开发领域。而在 Web 应用程序中,HTTP 日志的记录是非常重要的一项任务。在本文中,我们将介绍如何使用 Go 打包 HTTP 日志,并提供相应的演示代码。 HTTP 日志的作...
    99+
    2023-07-29
    打包 http 日志
  • 怎么在Go语言中使用日志包
    这篇“怎么在Go语言中使用日志包”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么在Go语言中使用日志包”文章吧。让我们来看...
    99+
    2023-06-30
  • 如何在Java项目中使用API打包和记录日志?
    在Java项目中,API打包和记录日志是非常重要的部分。API打包可以将代码打包成一个可复用的模块,方便其他开发者在其项目中引用,而记录日志则可以帮助开发者更好地了解应用程序运行的情况。在本文中,我们将介绍如何在Java项目中使用API打包...
    99+
    2023-08-20
    日志 打包 api
  • 二维码如何在日志中使用?
    二维码已经成为了我们生活中不可或缺的一部分,我们可以在很多地方看到二维码的身影,比如商场中的商品标签、电影票、食品包装等等。在这些场景中,二维码的主要作用是承载一些信息,方便我们快速地获取这些信息。但是,二维码的作用不仅仅局限于此,我们还...
    99+
    2023-10-06
    二维码 日志 git
  • Python日志打包load:如何在项目中更好地使用它?
    日志是软件开发中必不可少的一部分。它可以帮助开发人员快速定位问题并调试程序。Python作为一种流行的编程语言,自然也有自己的日志系统。Python的日志系统非常灵活,可以根据不同的需求进行配置和使用。本文将介绍Python的日志系统中的...
    99+
    2023-10-29
    日志 打包 load
  • Python 在 Linux 容器中如何使用日志?
    随着云计算技术的快速发展,容器化技术越来越成为了企业构建和部署应用程序的首选方案。而在容器中运行 Python 应用程序,日志记录是至关重要的。本文将介绍如何在 Linux 容器中使用 Python 日志记录功能,以便更好地监控和调试应用...
    99+
    2023-11-09
    linux 容器 日志
  • 如何在Python 中使用loguru日志框架
    如何在Python 中使用loguru日志框架?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。安装pip install loguru输出日志...
    99+
    2023-06-15
  • 如何在MySQL中使用慢查询日志
    这期内容当中小编将会给大家带来有关如何在MySQL中使用慢查询日志,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。慢查询日志相关参数MySQL 慢查询的相关参数解释:slo...
    99+
    2024-04-02
  • 如何在golang中使用module依赖包
    今天就跟大家聊聊有关如何在golang中使用module依赖包,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。module介绍go module是go新的依赖包管理系统,go modu...
    99+
    2023-06-14
  • Golang定制化zap日志库如何使用
    本篇内容主要讲解“Golang定制化zap日志库如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Golang定制化zap日志库如何使用”吧!为什么需要日志一个产品的诞生一定是因为有需求!新...
    99+
    2023-07-05
  • 如何使用Java在Unix环境下打包日志文件?
    在Unix环境下,日志文件是非常重要的,它们记录了系统的各种操作和事件,有助于管理员了解系统的运行状况。但是,随着时间的推移,日志文件会越来越多,占用大量的磁盘空间。为了解决这个问题,我们可以使用Java编写一个小程序,将多个日志文件打包...
    99+
    2023-11-14
    unix 日志 打包
  • 如何使用日志来调试 Golang 函数?
    使用日志调试 golang 函数:使用 log 包添加日志记录。指定日志记录级别,例如 info()、debug() 或 error()。在代码中打印日志消息以了解函数的状态和行为。使用...
    99+
    2024-04-17
    golang 日志调试 敏感数据
  • .NET6在WebApi中如何使用日志组件log4net
    这篇文章主要介绍.NET6在WebApi中如何使用日志组件log4net,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、安装依赖Microsoft.Extensions.Logging.Log4Net.AspNet...
    99+
    2023-06-22
  • Git记录:如何在Spring中使用Go日志?
    日志是软件开发中必不可少的一部分,它能够帮助开发者快速发现和解决问题。在Spring应用程序中,使用Go日志库可以提供更加高效和灵活的日志记录方式。本文将介绍如何在Spring中使用Go日志库,并演示如何记录不同级别的日志信息。 一、安装...
    99+
    2023-08-05
    日志 spring git
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作