Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Set Logging Level #132

Open
rdhillbb opened this issue Oct 21, 2018 · 5 comments
Open

Set Logging Level #132

rdhillbb opened this issue Oct 21, 2018 · 5 comments

Comments

@rdhillbb
Copy link

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

@baloo32
Copy link

baloo32 commented Dec 18, 2018

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

@fixNoobi
Copy link

fixNoobi commented Oct 19, 2019

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))

@utkudarilmaz
Copy link

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)

@fixNoobi
Copy link

@utkudarilmaz Thanx!

@adibraver
Copy link

adibraver commented Feb 10, 2022

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants