<p>这是我正在制作的模块的简化版本。该模块包含几个需要日志记录功能的类。每个类都会记录到一个不同的文件中,并且应该可以在类之间更改文件处理程序级别(例如,gamepad类:控制台.debug以及文件处理程序.info和MQTT类:控制台信息和filehandler.debug). 在</p>
<p>因此,我认为建立一个日志类是最简单的方法。请记住,我通常是做电子学的,但现在和python结合了。所以我的技能很基本。。。。在</p>
<pre><code>#!/bin/env python2.7
</code></pre>
<p>来自<strong>未来</strong>进口部
从操作员导入*
导入日志记录
从日志导入文件处理程序
从日志导入StreamHandler
导入pygame
导入线程
从pygame.locals游戏进口*
进口莫斯基托
导入时间
从时间导入睡眠
导入系统</p>
<p>类ConsoleFileLogger(对象):</p>
^{pr2}$
<p>类游戏板():</p>
<pre><code># class constructor
def __init__(self, mqttgamepad):
self.logger = ConsoleFileLogger('BaseLogFiles/Gamepad', 'Gamepad', logging.INFO, logging.INFO, logging.INFO).set()
if joystickcount == 0:
self.logger.error('No gamepad connected')
elif joystickcount == 1:
self.gamepad = pygame.joystick.Joystick(0)
self.gamepad.init()
self.logger.debug('Joystick name %s', self.gamepad.get_name())
self.logger.debug('nb of axes = %s', self.gamepad.get_numaxes())
self.logger.debug('nb of balls = %s', self.gamepad.get_numballs())
self.logger.debug('nb of buttons = %s', self.gamepad.get_numbuttons())
self.logger.debug('nb of mini joysticks = %s', self.gamepad.get_numhats())
elif joystickcount > 1:
self.logger.error('only one gamepad is allowed')
def run(self):
self.logger.debug('gamepad running')
</code></pre>
<p>类MQTTClient():</p>
<pre><code>def __init__(self, clientname):
self.logger = ConsoleFileLogger('BaseLogFiles/MQTT/Pub', clientname, logging.DEBUG, logging.DEBUG, logging.DEBUG).set()
self.logger.debug('test')
def run(self):
self.logger.info('Connection MQTT Sub OK')
</code></pre>
<p>def main():
logger=ConsoleFileLogger('BaseLogFiles/logControlCenterMain','ControlCenterMain',日志记录.DEBUG, 日志记录.DEBUG, 日志记录.DEBUG).set()</p>
<pre><code>mqttclient = MQTTClient("MQTTClient")
mqttclient.connect()
gamepad = Gamepad(mqttclient)
if gamepad.initialized():
gamepadthread = threading.Thread(target=gamepad.run)
gamepadthread.start()
mqtttpubhread = threading.Thread(target=mqttclient.run)
mqtttpubhread.start()
logger.info('BaseMain started')
# Monitor the running program for a KeyboardInterrupt exception
# If this is the case all threads and other methods can be closed the correct way :)
while 1:
try:
sleep(1)
except KeyboardInterrupt:
logger.info('Ctrl-C pressed')
gamepad.stop()
mqttclient.stop()
logger.info('BaseMain stopped')
sys.exit(0)
</code></pre>
<p>如果<strong>名称</strong>='<strong>main</strong>':
主()</p>