为什么logging模块不打印日志
Python2.7.13
问题:我写了一个监控服务器性能的模块,在另外一个模块使用任务框架,同时import监控模块,但很多时候模块不打印日志unix打印,对logging这块不是很理解,请大
系统centos6.8 Python2.7.13 问题:我写了一个监控服务器性能的模块,在另外一个模块使用任务框架,同时import监控模块,但很多时候模块不打印日志unix打印,对logging这块不是很理解,请大神帮忙指导下,谢谢! host模块代码: from SSH_D import ssh importlogging,time import threading from logging.config import fileConfig import ConfigParser fileConfig('../conf/logging.conf',disable_existing_loggers=0) logger = logging.getLogger() conf_read = ConfigParser.ConfigParser() conf_read.read("../conf/config_host.ini") class host_status(ssh): def cpu(self, cmd): ''' :param cmd: vmstat 1 5 |sed -n '3,$p'|awk '{x = x + $15} END {print x/5}' |awk -F. '{print $1}' :return: cpu utilization ratio ''' threshold = int(conf_read.get("DEFAULT","cpu")) use_ratio = 100 - float(self.get_reponse(cmd)[1].read().decode().strip()) # use_ratio = '%.3f' % (use_ratio) if use_ratio > threshold: logger.warning("%s : cpu used - %s%%" % (self.host, use_ratio)) else: logger.info("%s : cpu used - %s%%" % (self.host, use_ratio)) def disk(self, cmd): ''' :param cmd: df -h|sed '1d'|awk '{print $NF,$(NF-1)}' :return: disk utilization ratio list ''' threshold = int(conf_read.get("DEFAULT","disk")) for l in self.get_reponse(cmd)[1].read().decode().strip().split("\n"): k, v = l.split() v = int(v.replace("%", "")) if v > threshold: logger.warning("%s : filesystem %s used - %s%%" % (self.host, k, v)) else: logger.info("%s : filesystem %s used - %s%%" % (self.host, k, v)) def mem(self, cmd): ''' :param cmd: free -m|grep 'buffers/cache'|awk '{print ($3/($3+$4))*100}' :return: memory utilization ratio ''' threshold = int(conf_read.get("DEFAULT","mem")) use_ratio = float(self.get_reponse(cmd)[1].read().decode().strip()) if use_ratio > threshold: logger.warning("%s : mem use - %s%%" % (self.host, use_ratio)) else: logger.info("%s : mem used - %s%%" % (self.host, use_ratio)) def iowait(self, cmd): ''' :param cmd: iostat|grep -A 1 'avg-cpu'|grep -v 'avg-cpu'|awk '{print $4}' :return: the percentage of time that the CPU or CPUs were idle during which the system had an outstanding disk I/O request. ''' threshold = int(conf_read.get("DEFAULT","iowait")) use_ratio = float(self.get_reponse(cmd)[1].read().decode().strip()) if use_ratio > threshold: logger.warning("%s iowait - %s%%" % (self.host, use_ratio)) else: logger.info("%s iowait - %s%%" % (self.host, use_ratio)) def ioutil(self, cmd): ''' :param cmd: iostat -xndk|grep -A 1 'Device'|grep -v 'Device'|awk '{print $1, $NF}' :return: ''' threshold = int(conf_read.get("DEFAULT","ioutil")) for l in self.get_reponse(cmd)[1].read().decode().strip().split("\n"): k, v = l.split() v = float(v) if v > threshold: logger.warning("%s - %s ioutil - %s%%" % (self.host, k, v)) else: logger.info("%s - %s ioutil - %s%%" % (self.host, k, v)) def run_thread(self): cmd_cpu = "vmstat 1 5 |sed -n '3,$p'|awk '{x = x + $15} END {print x/5}' |awk -F. '{print $1}'" cmd_disk = "df -h|sed '1d'|awk '{print $NF,$(NF-1)}'" cmd_mem = "free -m|grep 'buffers/cache'|awk '{print ($3/($3+$4))*100}'" cmd_iowait = "iostat|grep -A 1 'avg-cpu'|grep -v 'avg-cpu'|awk '{print $4}'" cmd_ioutil = "iostat -xndk|grep -A 1 'Device'|grep -v 'Device'|awk '{print $1, $NF}'" jobs = [threading.Thread(target=self.cpu,, args=(cmd_cpu,)), threading.Thread(target=self.disk,, args=(cmd_disk,)), threading.Thread(target=self.mem,, args=(cmd_mem,)), threading.Thread(target=self.iowait,, args=(cmd_iowait,)), threading.Thread(target=self.ioutil,, args=(cmd_ioutil,))] for job in jobs: job.start() job.join() 调用host模块的job管理模块: import ConfigParser import logging from logging.config import fileConfig from HOST import host_status from apscheduler.schedulers.blocking import BlockingScheduler from NetMonitor import clientip from MySQLMonitor import db from Process import process from PageCheck import pageCheck fileConfig('../conf/logging.conf',disable_existing_loggers=0) logger = logging.getLogger() def host_job(): '''host status''' # Read configuration conf_read = ConfigParser.ConfigParser() conf_read.read("../conf/config_host.ini") iflen(conf_read.sections()): # process pool num = len(conf_read.sections()) # Multi process handle for section in conf_read.sections(): # every server in configuration if len(conf_read.options(section)): server = host_status(conf_read.get(section,"host"), conf_read.getint(section,"port"), conf_read.get(section,"user"), conf_read.get(section,"password")) server.run_thread() 系统启动接口模块: from JOB_Run import job_Scheduler import logging,sys from logging.config import fileConfig # log fileConfig('../conf/logging.conf',disable_existing_loggers=0) logger = logging.getLogger() # add job scheduler job_name=sys.argv[1] job_Scheduler(job_name) 现在使用 python27 ../MonApp/startup_job.py host_job >> /dev/null 2>&1 &启动,手动执行可以打印日志,如果系统BlockingScheduler调用则不能打印模块 (编辑:海南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |