def configure_logging(logger, log_level_file, log_level_stderr, filename): """Configures logging for given logger using the given filename. :return None. """ # Create an IdentityFilter. identity = get_identifier() identity_filter = IdentityFilter(identity=identity) formatter = logging.Formatter(LOG_FORMAT) if log_level_file != "NONE": # If the logging directory doesn't exist, create it. if not os.path.exists(LOG_DIR): os.makedirs(LOG_DIR) # Determine path to log file. log_path = os.path.join(LOG_DIR, filename) # Create a log handler and formatter and apply to _log. handler = ConcurrentRotatingFileHandler(filename=log_path, maxBytes=1000000, backupCount=5) handler.addFilter(identity_filter) handler.setFormatter(formatter) logger.addHandler(handler) logger.setLevel(log_level_file) if log_level_stderr != "NONE": # Attach a stderr handler to the log. stderr_handler = logging.StreamHandler(sys.stderr) stderr_handler.setLevel(log_level_stderr) stderr_handler.addFilter(identity_filter) stderr_handler.setFormatter(formatter) logger.addHandler(stderr_handler)
def configure_logging(logger, log_filename, log_level=logging.INFO, stderr_level=logging.ERROR, log_dir=LOG_DIR): """Configures logging for given logger using the given filename. :return None. """ # If the logging directory doesn't exist, create it. if not os.path.exists(log_dir): os.makedirs(log_dir) # Determine path to log file. log_path = os.path.join(log_dir, log_filename) # Create an IdentityFilter. identity = get_identifier() identity_filter = IdentityFilter(identity=identity) # Create a log handler and formtter and apply to _log. hdlr = ConcurrentRotatingFileHandler(filename=log_path, maxBytes=1000000, backupCount=5) hdlr.addFilter(identity_filter) formatter = logging.Formatter(LOG_FORMAT) hdlr.setFormatter(formatter) logger.addHandler(hdlr) logger.setLevel(log_level) # Attach a stderr handler to the log. stderr_hdlr = logging.StreamHandler(sys.stderr) stderr_hdlr.setLevel(stderr_level) stderr_hdlr.setFormatter(formatter) logger.addHandler(stderr_hdlr)
def getLogger(logname='root'): logger = logging.getLogger(logname) logger.setLevel(logging.DEBUG) DIR = '../log/' if DIR: # not none subprocess.check_call(['mkdir', '-p', DIR]) #================================ # File Handler #================================ LOG_FILENAME = os.path.abspath(DIR + logname + '.err') handler = ConcurrentRotatingFileHandler(LOG_FILENAME, "a", 200*1024*1024, 5) handler.setLevel(logging.WARN) formatter = logging.Formatter("%(asctime)s\t%(name)s-%(process)s-%(threadName)s\t%(levelname)s\t%(message)s") handler.setFormatter(formatter) logger.addHandler(handler) #================================ # Standard Output Handler: INFO ONLY #================================ # handler = logging.StreamHandler(sys.stdout) LOG_FILENAME = os.path.abspath(DIR + logname + '.info') handler = ConcurrentRotatingFileHandler(LOG_FILENAME, "a", 200*1024*1024, 5) handler.setLevel(logging.DEBUG) formatter = logging.Formatter("%(asctime)s\t%(name)s-%(process)s-%(threadName)s\t%(message)s") handler.setFormatter(formatter) handler.addFilter(LevelFilter(logging.INFO)) logger.addHandler(handler) return logger
def configure_logger(logger, log_level, docker_id=None, log_format=LOG_FORMAT, log_dir=LOG_DIR): """ Configures logging to the file 'calico.log' in the specified log directory If the logs are not coming from calico_kubernetes.py, format the log to include the filename of origin Additionally configures a stderr handler which logs INFO and above to stderr. :param logger: logger object to configure :param log_level: level at which logger starts logging. :param log_format: Indicates which logging scheme to use. :param log_dir: Directory where calico.log lives. If None set to default :return: """ if not os.path.exists(log_dir): os.makedirs(log_dir) formatter = logging.Formatter(log_format) docker_filter = IdentityFilter(identity=docker_id) file_hdlr = ConcurrentRotatingFileHandler(filename=log_dir + 'calico.log', maxBytes=1000000, backupCount=5) file_hdlr.setFormatter(formatter) if docker_id: file_hdlr.addFilter(docker_filter) # Add file handler and set log level. logger.addHandler(file_hdlr) logger.setLevel(log_level) # Create a stderr handler and apply it to the logger. # This only logs INFO and above to stderr. stderr_hdlr = logging.StreamHandler(sys.stderr) stderr_hdlr.setLevel(logging.INFO) stderr_hdlr.setFormatter(formatter) logger.addHandler(stderr_hdlr)
def configure_logger(logger, log_level, docker_id=None, log_format=LOG_FORMAT, log_dir=LOG_DIR): """ Configures logging to the file 'calico.log' in the specified log directory If the logs are not coming from calico_kubernetes.py, format the log to include the filename of origin Additionally configures a stderr handler which logs INFO and above to stderr. :param logger: logger object to configure :param log_level: level at which logger starts logging. :param log_format: Indicates which logging scheme to use. :param log_dir: Directory where calico.log lives. If None set to default :return: """ if not os.path.exists(log_dir): os.makedirs(log_dir) formatter = logging.Formatter(log_format) docker_filter = IdentityFilter(identity=docker_id) file_hdlr = ConcurrentRotatingFileHandler(filename=log_dir+'calico.log', maxBytes=1000000, backupCount=5) file_hdlr.setFormatter(formatter) if docker_id: file_hdlr.addFilter(docker_filter) # Add file handler and set log level. logger.addHandler(file_hdlr) logger.setLevel(log_level) # Create a stderr handler and apply it to the logger. # This only logs INFO and above to stderr. stderr_hdlr = logging.StreamHandler(sys.stderr) stderr_hdlr.setLevel(logging.INFO) stderr_hdlr.setFormatter(formatter) logger.addHandler(stderr_hdlr)
def __init__(self, log_dir): logger = logging.getLogger() logger.setLevel(logging.INFO) # 日志按每天切分到不同的文件夹下,先检查创建文件夹 # 注意脚本一次执行时间过短时,是不会触发日志切割的,因此主动拆分 # log_dir = os.path.join(app_dir, "log") if not os.path.exists(log_dir): os.mkdir(log_dir) info_handler = ConcurrentRotatingFileHandler(log_dir + "/info.log", "a", 1024 * 1024 * 1024 * 1, 6) error_handler = ConcurrentRotatingFileHandler(log_dir + "/error.log", "a", 1024 * 1024 * 10, 5) warning_handler = ConcurrentRotatingFileHandler( log_dir + "/warning.log", "a", 1024 * 1024 * 10, 5) info_filter = InfoFilter() error_filter = ErrorFilter() warning_filter = WarningFilter() info_handler.addFilter(info_filter) error_handler.addFilter(error_filter) warning_handler.addFilter(warning_filter) # 设置formatter fmt = "%(asctime)s [%(levelname)s] [%(process)d:%(thread)d] [%(name)s:%(lineno)d] - %(message)s" formatter = logging.Formatter(fmt) # 实例化formatter info_handler.setFormatter(formatter) error_handler.setFormatter(formatter) warning_handler.setFormatter(formatter) logger.addHandler(info_handler) logger.addHandler(error_handler) logger.addHandler(warning_handler)