'Unable to generate the logs into a file in Python using logger module
I'm trying to generate the logs to a file called 'app.log' but it is giving me error. If I comment that this line logging.basicConfig(filename='app.log', level=logging.INFO) then the program do not give any error. Not sure what mistake I'm doing in generating the logs to this custom file.
This is my Python code:-
import logging, platform
from logging import Logger
from logging.handlers import SysLogHandler
class HostnameFilter(logging.Filter):
hostname = platform.node()
def filter(self, record):
record.hostname = HostnameFilter.hostname
return True
def get_logger(logger_name) -> Logger:
"""Return log handler for the file
Args:
logger_name: caller file name
Returns:
Logger: log handle
"""
logger = logging.getLogger(logger_name)
logger.setLevel(logging.INFO)
formatter = logging.Formatter("[%(asctime)s - %(hostname)s - %(name)s:%(lineno)d - %(levelname)s] : %(message)s")
logging.basicConfig(filename='app.log', level=logging.INFO)
#file_handler = logging.FileHandler('app.log')
#file_handler.setFormatter(formatter)
#if (logger.hasHandlers()):
# logger.handlers.clear()
#logger.addHandler(file_handler)
streamhandler = logging.StreamHandler()
streamhandler.setLevel(logging.INFO)
streamhandler.addFilter(HostnameFilter())
streamhandler.setFormatter(formatter)
logger.addHandler(streamhandler)
syslog_formatter =logging.Formatter(fmt="%(hostname)s %(name)s: %(msg)s")
syslog_handler = SysLogHandler(facility=SysLogHandler.LOG_LOCAL6)
syslog_handler.addFilter(HostnameFilter())
syslog_handler.setFormatter(syslog_formatter)
logger.addHandler(syslog_handler)
return logger
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
