1. 程式人生 > >python flask 解析配置檔案與寫日誌

python flask 解析配置檔案與寫日誌

test.conf  

[kafka]
kafka_sys_topic = test-sys-info
kafka_sys_group = test-consumer-group
zookeeper_server = 192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181

[mysqldb]
mysql_host = 192.168.1.10
mysql_port = 3306
mysql_dbname = testdb
mysql_user = testuser
mysql_passwd = testpassword

[log]
conf = /logging.conf


config_parser.py

import sys
import os
import ConfigParser

CUR_PATH = os.path.abspath(__file__) #當前檔案的絕對路徑
CUR_DIR = os.path.dirname(CUR_PATH) #當前檔案所在的目錄
CUR_PARE = os.path.dirname(CUR_DIR) #當前檔案所在的目錄的父目錄
CONFIG_PATH = CUR_PARE + "/test.conf"

config = ConfigParser.ConfigParser()


class Config(object):
def __init__(self):
config.read(CONFIG_PATH)
try:
#kafka section config
self.kafka_sys_topic = config.get('kafka', 'kafka_sys_topic')
self.kafka_sys_group = config.get('kafka', 'kafka_sys_group')
self.zookeeper_server = config.get('kafka', 'zookeeper_server')
# mysql database section config
self.mysql_host = config.get('mysqldb', 'mysql_host')
self.mysql_port = config.get('mysqldb', 'mysql_port')
self.mysql_dbname = config.get('mysqldb', 'mysql_dbname')
self.mysql_user = config.get('mysqldb', 'mysql_user')
self.mysql_passwd = config.get('mysqldb', 'mysql_passwd')
       # log section config, the following code can not move forward
       self.logging_conf = CUR_PARE + config.get('log', 'conf')
       config.read(self.logging_conf)
       self.agent_log_fname = eval(config.get('handler_agentHandler', 'args').replace(')(', '),('))[0]
       self.client_log_fname = eval(config.get('handler_serverHandler', 'args').replace(')(', '),('))[0]
        except Exception as ex:
print(ex)
sys.exit(2)


logging.conf

[loggers]
keys = root,agent,server,test,access,apsjob,apscheduler.executors.default

[handlers]
keys = consoleHandler,agentHandler,serverHandler,testHandler, accessHandler, apsjobHandler, apsexcutorHandler

[formatters]
keys = simpleFormatter,threadsFormater

[formatter_simpleFormatter]
format = %(asctime)s - %(name)s - %(module)s - [%(filename)s(%(lineno)d)] - %(levelname)s : %(message)s

[formatter_threadsFormater]
format = %(asctime)s - %(name)s - %(module)s - [%(process)d - %(threadName)s : %(thread)d - %(filename)s(%(lineno)d)] - %(levelname)s : %(message)s

[logger_root]
level = DEBUG
handlers = consoleHandler

[logger_agent]
level = DEBUG
handlers = agentHandler
qualname = agent
propagate = 0

[logger_server]
level = DEBUG
handlers = serverHandler
qualname = server
propagate = 0

[logger_test]
level = DEBUG
handlers = testHandler
qualname = test
propagate = 0

[logger_access]
level = DEBUG
handlers = accessHandler
qualname = access
propagate = 0

[logger_apsjob]
level = DEBUG
handlers = apsjobHandler
qualname = apsjob
propagate = 0

[logger_apscheduler.executors.default]
level = DEBUG
handlers = apsexcutorHandler
qualname = apscheduler.executors.default
propagate = 0


[handler_consoleHandler]
class = StreamHandler
level = DEBUG
formatter = simpleFormatter
args = (sys.stdout,)

[handler_agentHandler]
class = handlers.TimedRotatingFileHandler
level = DEBUG
formatter = threadsFormater
args = ('/var/log/test/agent.log', 'D', 1, 7, 'utf8')
#args=('test.log'),'a',10000,10)

[handler_serverHandler]
class = handlers.TimedRotatingFileHandler
level = DEBUG
formatter = simpleFormatter
args = ('/var/log/test/server.log', 'D', 1, 7, 'utf8')

[handler_testHandler]
class = handlers.TimedRotatingFileHandler
level = DEBUG
formatter = simpleFormatter
args = ('/var/log/test/test.log', 'D', 1, 7, 'utf8')

[handler_accessHandler]
class = handlers.TimedRotatingFileHandler
level = DEBUG
formatter = simpleFormatter
args=('/var/log/test/access.log', 'D', 1, 7, 'utf8')

[handler_apsjobHandler]
class = handlers.TimedRotatingFileHandler
level = DEBUG
formatter = simpleFormatter
args=('/var/log/test/apsjob.log', 'D', 1, 7, 'utf8')

[handler_apsexcutorHandler]
class = handlers.TimedRotatingFileHandler
level = DEBUG
formatter = simpleFormatter
args=('/var/log/test/apsexcutor.log', 'D', 1, 7, 'utf8')