I made a bot python app using selenium and I mostly use logging for selenium logs. I want to add my own variable into formatter but I can’t do it on my own. I was searching internet, trying different things but I always do something wrong and always get ValueError: Formatting field not found in record: 'username'
error. I just want to add inGame username to the output.
import logging
import logging.handlers
import logging.config
HowrseUsername = "some_username"
class seleniumfilter(logging.Filter):
def filter(self, record):
if "error" in record.getMessage() or record.getMessage().startswith("POST") or record.getMessage().startswith("Remote response"):
return True
return False
logger=logging.getLogger(__name__)
logging_config = {
"version": 1,
"disabe_existing_loggers": False,
"filters": {
"seleniumfilter": {
"()": "__main__.seleniumfilter"
}
},
"formatters": {
"simple": {
"format": '%(username)s || %(asctime)s || %(levelname)s || %(name)s || %(message)s'
}
},
"handlers": {
"errorshandler": {
"class": "logging.handlers.RotatingFileHandler",
"level": "ERROR",
"formatter": "simple",
"filename": "logs/errors.log",
"encoding": 'utf-8',
"maxBytes": 20000000,
"backupCount": 2
},
"seleniumhandler": {
"class": "logging.handlers.RotatingFileHandler",
"level": "DEBUG",
"formatter": "simple",
"filename": "logs/seleniumlogs.log",
"encoding": 'utf-8',
"filters": ['seleniumfilter'],
"maxBytes": 20000000,
"backupCount": 2
}
},
"loggers": {
"root": {
"level": "DEBUG",
"handlers": [
"errorshandler",
"seleniumhandler"
]
}
}
}
logging.config.dictConfig(logging_config)
I tried doing formatter class, using LoggerAdapter etc. but I always get this error so I must be doing something wrong. Pls help.
Shay is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.