go-logging icon indicating copy to clipboard operation
go-logging copied to clipboard

Set Logging Level

Open rdhillbb opened this issue 6 years ago • 5 comments

What does SetLevel() do? If I set the logging level to logging.INFO, will only the message written to logging.Info() be written? Sorry for the remedial question.

Thank you

rdhillbb avatar Oct 21 '18 04:10 rdhillbb

Yes, you need to pass the constant (logging.DEBUG / logging.INFO) and the name of your logger instance. Only messages written to the logger at the specified allowed level will then be output, others will be discarded.

e.g. use logging.SetLevel(logging.INFO, "myLog") logger.Info("my message") > is output logger.debug("my message") !output

baloo32 avatar Dec 18 '18 12:12 baloo32

Dosent work

	logging.SetLevel(logging.INFO,"")
	backend := logging.NewLogBackend(os.Stderr, "", 0)
	backend2Formatter := logging.NewBackendFormatter(backend, format)

	logging.SetLevel(logging.INFO, "myLog")

	if strings.ToUpper(*LOG_LEVEL) == "ERROR" {
	 	logging.SetLevel(logging.ERROR, "myLog")
	} else if strings.ToUpper(*LOG_LEVEL) == "INFO" {
	    logging.SetLevel(logging.INFO, log.Module)
	} else if strings.ToUpper(*LOG_LEVEL) == "DEBUG" {
		logging.SetLevel(logging.DEBUG, "myLog")
	} else if strings.ToUpper(*LOG_LEVEL) == "CRITICAL" {
		logging.SetLevel(logging.CRITICAL, "myLog")
	} else if strings.ToUpper(*LOG_LEVEL) == "NOTICE" {
		logging.SetLevel(logging.NOTICE, "myLog")
	} else if strings.ToUpper(*LOG_LEVEL) == "WARNING" {
		logging.SetLevel(logging.WARNING, "myLog")
	} else {
		logging.SetLevel(logging.INFO, log.Module)
	}

	logging.SetBackend(backend2Formatter)
	log.Info(logging.GetLevel(log.Module))

fixNoobi avatar Oct 19 '19 11:10 fixNoobi

Try this

stdout := logging.NewLogBackend(os.Stdout, "", 0)

format := logging.MustStringFormatter(`%{color}%{time:15:04:05.000} %{shortfunc} ▶ %{level:.5s} %{id:03x}%{color:reset} %{message}`)
logging.SetFormatter(format)

levelBackend := logging.AddModuleLevel(stdout)
switch strings.ToUpper(*LOG_LEVEL) {
case "CRITICAL":
	levelBackend.SetLevel(logging.CRITICAL, "")
case "ERROR":
	levelBackend.SetLevel(logging.ERROR, "")
case "WARN":
	levelBackend.SetLevel(logging.WARNING, "")
case "NOTICE":
	levelBackend.SetLevel(logging.NOTICE, "")
case "DEBUG":
	levelBackend.SetLevel(logging.DEBUG, "")
default:
	levelBackend.SetLevel(logging.INFO, "")
}

logging.SetBackend(levelBackend)

utkudarilmaz avatar Oct 20 '19 01:10 utkudarilmaz

@utkudarilmaz Thanx!

fixNoobi avatar Oct 20 '19 10:10 fixNoobi

Hi @utkudarilmaz! can i change the log level after the log was initialized? i see that SetLevel() doesn't have any locking mechanism. is this the right way to do it? Logging.SetLevel()? or init the log again? Thanks.

adibraver avatar Feb 10 '22 08:02 adibraver