go-utils

module
v1.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 19, 2022 License: MIT

README

go-utils

Go utils contains the set of common reusable utility methods which can be reused across all Go projects.

Installation

To install go-utils package, you need to install Go and set your Go workspace first.

  1. The first need Go installed (version 1.17+ is required), then you can use the below Go command to install go-utils.
go get github.com/speedtrade/go-utils
  1. Import it in your code:
package main

import "github.com/speedtrade/go-utils"

Usage

Reading Config

Config file is located at resources/dev directory and name is config.yml.

logger:
  consoleLoggingEnabled: true
  fileName: logs/access.log
  errorFileName: logs/error.log
  maxSizeInMB: 1024
  maxBackups: 10
  maxAgeInDays: 2
  compress: true

Go code to read above config.yml file

package main

import (
	"log"

	"github.com/speedtrade/go-utils/config"
)

const (
	LoggerConsoleEnabled = "logger.consoleLoggingEnabled"
	LoggerFileName       = "logger.fileName"
	LoggerErrorFileName  = "logger.errorFileName"
	LoggerMaxSizeInMB    = "logger.maxSizeInMB"
	LoggerMaxBackUps     = "logger.maxBackups"
	LoggerMaxAgeInDays   = "logger.maxAgeInDays"
	LoggerCompress       = "logger.compress"
)

func main() {
	config.Init("resources/dev")

	conf, err := config.Get("config")

	if err != nil {
		log.Fatal("error getting config err : ", err)
	}

	log.Println("Logger Filename : ", conf.GetString(LoggerFileName))
	log.Println("Logger Error Filename : ", conf.GetString(LoggerErrorFileName))
	log.Println("Logger Max Size In MB : ", conf.GetString(LoggerMaxSizeInMB))
	log.Println("Logger Max Back Ups : ", conf.GetString(LoggerMaxBackUps))
}
Logger

The logger is based on uber-zap module.

package main

import (
	"log"

	"github.com/speedtrade/go-utils/config"
	"github.com/speedtrade/go-utils/logger"
	"github.com/speedtrade/go-utils/model"
)

const (
	LoggerConsoleEnabled = "logger.consoleLoggingEnabled"
	LoggerFileName       = "logger.fileName"
	LoggerErrorFileName  = "logger.errorFileName"
	LoggerMaxSizeInMB    = "logger.maxSizeInMB"
	LoggerMaxBackUps     = "logger.maxBackups"
	LoggerMaxAgeInDays   = "logger.maxAgeInDays"
	LoggerCompress       = "logger.compress"
)

func main() {
	config.Init("resources/dev")

	conf, err := config.Get("config")

	if err != nil {
		log.Fatal("error getting config err : ", err)
	}

	log.Println("Logger Filename : ", conf.GetString(LoggerFileName))
	log.Println("Logger Error Filename : ", conf.GetString(LoggerErrorFileName))
	log.Println("Logger Max Size In MB : ", conf.GetString(LoggerMaxSizeInMB))
	log.Println("Logger Max Back Ups : ", conf.GetString(LoggerMaxBackUps))

	var tops = []logger.TeeOption{
		{

			Logopt: model.LoggerOptions{
				Filename:   conf.GetString(LoggerFileName),
				MaxSize:    conf.GetInt(LoggerMaxSizeInMB),
				MaxAge:     conf.GetInt(LoggerMaxAgeInDays),
				MaxBackups: conf.GetInt(LoggerMaxBackUps),
				Compress:   conf.GetBool(LoggerCompress),
			},
			Lef: func(lvl logger.Level) bool {
				return lvl <= logger.InfoLevel
			},
		},
		{
			Logopt: model.LoggerOptions{
				Filename:   conf.GetString(LoggerErrorFileName),
				MaxSize:    conf.GetInt(LoggerMaxSizeInMB),
				MaxAge:     conf.GetInt(LoggerMaxAgeInDays),
				MaxBackups: conf.GetInt(LoggerMaxBackUps),
				Compress:   conf.GetBool(LoggerCompress),
			},
			Lef: func(lvl logger.Level) bool {
				return lvl > logger.InfoLevel
			},
		},
	}

	log := logger.NewTeeWithRotate(tops)
	logger.ResetDefault(log)

	for i := 0; i < 20; i++ {
		logger.Info("example:", logger.String("app", "start ok"), logger.Int("major version", 3))
		logger.Error("example:", logger.String("app", "crash"), logger.Int("reason", -1))
	}
}
Logger Ref.

https://www.sobyte.net/post/2022-03/uber-zap-advanced-usage

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL