一、
import logging
import sys
import logging.config
import logging.handlers
import subprocess
global log_file
global log_level
log_file = '%s.log' % FUNCTION_NAME
log_level = logging.INFO
class monitor(object):
alarm = 0
base_cpld_path = ""
def __init__(self, log_file, log_level):
"""Needs a logger and a logger level."""
logging.basicConfig(
filename=log_file,
filemode='a',
level=log_level,
format= '[%(asctime)s] {%(pathname)s:%(lineno)d} %(levelname)s - %(message)s',
datefmt='%Y-%m-%d %H:%M:%S'
)
if log_level == logging.DEBUG:
console = logging.StreamHandler()
console.setLevel(log_level)
formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
console.setFormatter(formatter)
logging.getLogger('').addHandler(console)
sys_handler = logging.handlers.SysLogHandler(address = '/dev/log')
sys_handler.setLevel(logging.INFO)
logging.getLogger('').addHandler(sys_handler)
def get_cpld_hwmon_offset(self):
sysfs = '/sys/class/hwmon/hwmon{0}/name'
offset = -1
cpld_name = 'xc_cpld'
for index in range(0, 10):
filename=sysfs.format(index)
if os.path.exists(filename) and os.path.isfile(filename):
cmd = "cat " + filename
proc1 = subprocess.Popen(cmd, shell=True, universal_newlines=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output = proc1.stdout.readlines()
errput = proc1.stderr.readlines()
(out, err) = proc1.communicate()
if proc1.returncode > 0:
for line1 in errput:
logging.info("ipmitool sdr Error: %s", line1.strip())
return None
for i in range(len(output)):
if output[0].find(cpld_name) >= 0:
offset = index
break
return offset