86 lines
2.7 KiB
Python
86 lines
2.7 KiB
Python
# coding=utf-8
|
|
|
|
from __future__ import unicode_literals
|
|
from __future__ import print_function
|
|
from __future__ import division
|
|
from __future__ import absolute_import
|
|
from future import standard_library
|
|
import logging
|
|
import sys
|
|
import os
|
|
from logging.handlers import RotatingFileHandler
|
|
standard_library.install_aliases()
|
|
|
|
# Global variable definition
|
|
|
|
logger = None
|
|
TORTILLADEBUG = True
|
|
HOME = os.getenv('HOME')
|
|
if HOME is None:
|
|
print("$HOME environment variable not set, please check your system")
|
|
sys.exit(1)
|
|
if HOME == '':
|
|
print("$HOME environment is set, but empty, please check your system")
|
|
sys.exit(1)
|
|
|
|
REDFISH_HOME = os.path.join(HOME, ".redfish")
|
|
if not os.path.exists(REDFISH_HOME):
|
|
try:
|
|
os.mkdir(REDFISH_HOME)
|
|
except IOError:
|
|
print('ERROR: can\'t create {}.\n'.format(REDFISH_HOME))
|
|
print(' Try to create directory {}'.format(REDFISH_HOME))
|
|
print(' using: mkdir -p {}'.format(REDFISH_HOME))
|
|
sys.exit(1)
|
|
|
|
REDFISH_LOGFILE = os.path.join(REDFISH_HOME, "python-redfish.log")
|
|
CONSOLE_LOGGER_LEVEL = logging.DEBUG
|
|
FILE_LOGGER_LEVEL = logging.DEBUG
|
|
|
|
|
|
def initialize_logger(REDFISH_LOGFILE,
|
|
CONSOLE_LOGGER_LEVEL,
|
|
FILE_LOGGER_LEVEL,
|
|
logger_name=None):
|
|
'''Initialize a global logger to track application behaviour
|
|
|
|
:param redfish_logfile: Log filename
|
|
:type redfish_logfile: str
|
|
:param screen_logger_level: Console log level
|
|
(logging.DEBUG, logging.ERROR, ..) or nolog
|
|
:type screen_logger_level: logging constant or string
|
|
:param file_logger_level: File log level
|
|
:type file_logger_level: logging constant
|
|
:returns: logging object
|
|
|
|
'''
|
|
|
|
logger = logging.getLogger(logger_name)
|
|
logger.setLevel(logging.DEBUG)
|
|
formatter = logging.Formatter(
|
|
'%(asctime)s :: %(levelname)s :: %(message)s')
|
|
|
|
try:
|
|
file_handler = RotatingFileHandler(
|
|
os.path.expandvars(REDFISH_LOGFILE), 'a', 1000000, 1)
|
|
except IOError:
|
|
print('ERROR: {} does not exist or is not writeable.\n'.format(
|
|
REDFISH_LOGFILE))
|
|
print(' Try to create directory {}'.format(os.path.dirname(
|
|
REDFISH_LOGFILE)))
|
|
print(' using: mkdir -p {}'.format(os.path.dirname(
|
|
REDFISH_LOGFILE)))
|
|
sys.exit(1)
|
|
|
|
# First logger to file
|
|
file_handler.setLevel(FILE_LOGGER_LEVEL)
|
|
file_handler.setFormatter(formatter)
|
|
logger.addHandler(file_handler)
|
|
|
|
# Second logger to console
|
|
if CONSOLE_LOGGER_LEVEL != "nolog":
|
|
steam_handler = logging.StreamHandler()
|
|
steam_handler.setLevel(CONSOLE_LOGGER_LEVEL)
|
|
logger.addHandler(steam_handler)
|
|
return logger
|