首页 > 其他分享 >最简单的方式实现 Golang的级别日志

最简单的方式实现 Golang的级别日志

时间:2023-09-21 17:22:46浏览次数:37  
标签:... level lo any Golang func 日志 级别 logger

lo.go

package lo

import (
    "log"
    "os"
)

const (
    TRACE int = iota
    DEBUG
    INFO
    WARN
    ERROR
    FATAL
)

type LevelLogger struct {
    level  int
    logger *log.Logger
}

var l *LevelLogger

func init() {
    l = &LevelLogger{
        level:  TRACE,
        logger: log.New(os.Stdout, "", 0),
    }
}

func SetLevel(level int) {
    l.level = level
}
func SetLogger(logger *log.Logger) {
    l.logger = logger
}

func Trace(v ...any) {
    if TRACE >= l.level {
        l.logger.Println("[TRACE]", v)
    }
}
func Debug(v ...any) {
    if DEBUG >= l.level {
        l.logger.Println("[DEBUG]", v)
    }
}
func Info(v ...any) {
    if INFO >= l.level {
        l.logger.Println("[INFO]", v)
    }
}
func Warn(v ...any) {
    if WARN >= l.level {
        l.logger.Println("[WARN]", v)
    }
}
func Error(v ...any) {
    if ERROR >= l.level {
        l.logger.Println("[ERROR]", v)
    }
}
func Fatal(v ...any) {
    if FATAL >= l.level {
        l.logger.Fatalln("[FATAL]", v)
    }
}

 

 

main.go

package main

import (
    "awesomeProject1/lo"
)

func main() {
    lo.SetLevel(lo.FATAL)
    lo.Trace("the is Trace")
    lo.Debug("the is Debug")
    lo.Info("the is Info")
    lo.Warn("the is Warn")
    lo.Error("the is Error")
    lo.Fatal("the is Fatal")
}

 

标签:...,level,lo,any,Golang,func,日志,级别,logger
From: https://www.cnblogs.com/liudongcai/p/17720461.html

相关文章

  • Window计划任务调用exe程序时日志文件没有写出问题
    转自:https://blog.csdn.net/qq273766764/article/details/50729967/在之前写的exe程序中均有写文件日志操作,直接运行时是有日志文件的,但是配置到计划任务中就没有日志文件产生,程序的读写权限都已配置,但仍是没有日志文件之后百度了一下,原因是由于没有配置操作中的起始于选项,程......
  • 非全日志考研笔记
    前言因为自己最近突然有想考研的念头了,于是开始调研考研相关事宜。想了很久考全日制还是非全日制,最终还是打算选择非全日制。考虑的点主要是:1. 自己本科毕业,目前在互联网大厂做iOS开发工程师,已经是一份比较好的工作了2.自己考研的初衷,也不是为了在互联网找到一份更好的工......
  • Netfilter日志记录
    iptables-traw-IPREROUTING-ptcp--dport80-jLOG#iptables-traw-IPREROUTING-ptcp--dport80-jLOG--log-level3--log-prefix"ipt-err:" 可以指定log级别日志级别可通过syslog定义进行查看。另外LOG目标还可指定参数:–log-tcp-sequence,–log-tcp-option......
  • MySQL 日志管理、备份与恢复
    MySQL日志管理、备份与恢复---MySQL日志管理---MySQL的日志默认保存位置为/usr/local/mysql/datavim/etc/my.cnf[mysqld]##错误日志,用来记录当MySQL启动、停止或运行时发生的错误信息,默认已开启log-error=/usr/local/mysql/data/mysql_error.log#指定......
  • ELK日志采集 - QuickStart
    目录架构选型ELKEFLKElasticsearchES集群搭建常用命令Filebeat功能介绍安装步骤Filebeat配置详解filebeat常用命令Logstash功能介绍安装步骤Input插件Filter插件GrokFilter插件MutateFilter插件常见的插件配置选项:MutateFilter配置案例:Output插件Kibana功能介绍安装步骤架构......
  • golang 实现 socks5 正向代理服务器
    socks5proxy.gopackagemainimport("encoding/binary""errors""flag""fmt""io""net""strconv")varportintfuncmain(){flag.IntVar(&port,......
  • 2023-9-20交易日志报错排查分析
    1、下单失败:名词解释:NOTIONAL名义价值来源:https://binance-docs.github.io/apidocs/spot/cn/#cc81fff589名义价值过滤器(NOTIONAL)定义了订单在一个交易对上可以下单的名义价值区间.applyMinToMarket定义了minNotional是否适用于市价单(MARKET)applyMaxToMarket定义了......
  • 将每一个OTU拆分成不同的分类级别
    importpandasaspd#读取OTU表otu_df=pd.read_csv('C:\\Users\\Administrator\\Desktop\\1.txt',header=None)#创建一个空的DataFrame来存储结果df=pd.DataFrame(columns=["OTUID","Kingdom","Phylum","Class",&......
  • SpringBoot + MDC 实现全链路调用日志跟踪
    简介:MDC(MappedDiagnosticContext,映射调试上下文)是log4j、logback及log4j2提供的一种方便在多线程条件下记录日志的功能。MDC可以看成是一个与当前线程绑定的哈希表,可以往其中添加键值对。MDC中包含的内容可以被同一线程中执行的代码所访问。当前线程的子线程会继承其父线......
  • 【TinyWebServer】09日志系统(上)
    基础概念日志,由服务器自动创建,并记录运行状态,错误信息,访问数据的文件同步日志,日志写入函数与工作线程串行执行,由于涉及到I/O操作,当单条日志比较大的时候,同步模式会阻塞整个处理流程,服务器所能处理的并发能力将有所下降,尤其是在峰值的时候,写日志可能成为系统的瓶颈。生产者-消费......