From 9654f4de98734c22bdcf5f68e353ff396f70f9ce Mon Sep 17 00:00:00 2001 From: "Brian S. Stephan" Date: Sun, 15 Jul 2012 21:32:12 -0500 Subject: [PATCH] switch to use python's logging, with config file i'm not entirely happy about --- DrBotIRC.py | 15 ++++++++++----- Module.py | 10 ++++++---- dr.botzo.py | 9 +++++++-- logging.cfg | 27 +++++++++++++++++++++++++++ modules/Achievements.py | 34 +++++++++++++++++----------------- modules/Acro.py | 4 ++-- modules/Facts.py | 2 +- modules/Karma.py | 6 +++--- modules/Markov.py | 18 +++++++++--------- modules/Pi.py | 2 +- modules/Seen.py | 8 ++++---- modules/Storycraft.py | 36 ++++++++++++++++++------------------ modules/Twitter.py | 22 +++++++++++----------- 13 files changed, 116 insertions(+), 77 deletions(-) create mode 100644 logging.cfg diff --git a/DrBotIRC.py b/DrBotIRC.py index fab4429..21dc453 100644 --- a/DrBotIRC.py +++ b/DrBotIRC.py @@ -19,6 +19,7 @@ along with this program. If not, see . import bisect import copy from ConfigParser import NoOptionError, NoSectionError +import logging import re import signal from SimpleXMLRPCServer import SimpleXMLRPCServer @@ -37,6 +38,7 @@ class DrBotzoMethods: """Store the same stuff the core module would, since we'll probably need it.""" self.irc = irc + self.log = logging.getLogger('dr.botzo') def echo(self, message): """ @@ -95,6 +97,7 @@ class DrBotServerConnection(irclib.ServerConnection): # temporary. hopefully on_welcome() will set this self.nickmask = socket.getfqdn() + self.log = logging.getLogger('dr.botzo') self.add_global_handler('welcome', self.on_welcome, 1) @@ -149,6 +152,7 @@ class DrBotIRC(irclib.IRC): self.config = config self.xmlrpc = None + self.log = logging.getLogger('dr.botzo') # handle SIGINT signal.signal(signal.SIGINT, self.sigint_handler) @@ -187,7 +191,7 @@ class DrBotIRC(irclib.IRC): if self.config.has_section('Ignore'): alias = self.config.get('Ignore', nick.lower()) if alias: - print("ignoring " + nick + " as per config file") + self.log.debug("ignoring " + nick + " as per config file") return except NoOptionError: pass @@ -202,8 +206,9 @@ class DrBotIRC(irclib.IRC): return except Exception as e: exc_type, exc_value, exc_traceback = sys.exc_info() - print("exception floated up to DrBotIrc!") - traceback.print_exception(exc_type, exc_value, exc_traceback) + self.log.error("exception floated up to DrBotIrc!") + self.log.error(exc_type + ": " + exc_value) + self.log.error(exc_traceback) def xmlrpc_register_function(self, func, name): """Add a method to the XML-RPC interface.""" @@ -383,7 +388,7 @@ class DrBotIRC(irclib.IRC): module.shutdown() connection.quit(msg) - print(self.save_config()) + self.log.info(self.save_config()) self._xmlrpc_shutdown() sys.exit() @@ -493,7 +498,7 @@ class DrBotIRC(irclib.IRC): module.save() module.shutdown() - print(self.save_config()) + self.log.info(self.save_config()) self._xmlrpc_shutdown() sys.exit() diff --git a/Module.py b/Module.py index 8808167..21df1a1 100644 --- a/Module.py +++ b/Module.py @@ -19,6 +19,7 @@ along with this program. If not, see . from ConfigParser import NoSectionError, NoOptionError import inspect +import logging import re import sys import sqlite3 @@ -40,6 +41,7 @@ class Module(object): self.irc = irc self.config = config self.server = server + self.log = logging.getLogger('dr.botzo') self.is_shutdown = False @@ -47,7 +49,7 @@ class Module(object): self.db_init() # print what was loaded, for debugging - print("loaded " + self.__class__.__name__) + self.log.debug("loaded " + self.__class__.__name__) def register_handlers(self): """Hook handler functions into the IRC library. This is called when the @@ -203,7 +205,7 @@ class Module(object): conn.close() except sqlite3.Error as e: conn.close() - print("sqlite error:" + str(e)) + self.log.error("sqlite error:" + str(e)) return version @@ -218,7 +220,7 @@ class Module(object): except sqlite3.Error as e: db.rollback() db.close() - print("sqlite error: " + str(e)) + self.log.error("sqlite error: " + str(e)) raise def db_init(self): @@ -234,7 +236,7 @@ class Module(object): events. """ - print("looks like someone forgot to implement do!") + self.log.error("looks like someone forgot to implement do!") def help_description(self): """Return a quick list of commands or other summary, should be diff --git a/dr.botzo.py b/dr.botzo.py index 6caa491..7f58c7d 100644 --- a/dr.botzo.py +++ b/dr.botzo.py @@ -17,6 +17,8 @@ along with this program. If not, see . """ from ConfigParser import ConfigParser, NoSectionError, NoOptionError +import logging +import logging.config import os import re import sys @@ -56,6 +58,9 @@ except NoOptionError as e: # load additional options irclib.DEBUG = config.getboolean('dr.botzo', 'debug') +logging.config.fileConfig('logging.cfg') +log = logging.getLogger('dr.botzo') + try: # make sure we can initialize the database, if such a thing is # called for in the config file @@ -96,9 +101,9 @@ try: for mod in mods: irc.load_module(mod) except NoSectionError as e: - print("You seem to be missing a modules config section, which you probably wanted.") + log.error("You seem to be missing a modules config section, which you probably wanted.") except NoOptionError as e: - print("You seem to be missing a modlist config option, which you probably wanted.") + log.error("You seem to be missing a modlist config option, which you probably wanted.") # loop forever irc.process_forever() diff --git a/logging.cfg b/logging.cfg new file mode 100644 index 0000000..850e4ed --- /dev/null +++ b/logging.cfg @@ -0,0 +1,27 @@ +[loggers] +keys = root,dr.botzo + +[handlers] +keys = dr.botzo + +[formatters] +keys = dr.botzo + +[logger_root] +level = DEBUG +handlers = dr.botzo + +[logger_dr.botzo] +level = DEBUG +handlers = dr.botzo +propagate = 1 +qualname = drbotzo + +[handler_dr.botzo] +class = StreamHandler +level = DEBUG +args = (sys.stdout,) + +[formatter_dr.botzo] +format = %(asctime)s %(levelname)s %(message)s +datefmt = diff --git a/modules/Achievements.py b/modules/Achievements.py index 1e09913..8298a54 100644 --- a/modules/Achievements.py +++ b/modules/Achievements.py @@ -113,7 +113,7 @@ class Achievements(Module): except sqlite3.Error as e: db.rollback() db.close() - print("sqlite error: " + str(e)) + self.log.error("sqlite error: " + str(e)) raise if (version < 2): db = self.get_db() @@ -129,7 +129,7 @@ class Achievements(Module): except sqlite3.Error as e: db.rollback() db.close() - print("sqlite error: " + str(e)) + self.log.error("sqlite error: " + str(e)) raise if (version < 3): db = self.get_db() @@ -154,7 +154,7 @@ class Achievements(Module): except sqlite3.Error as e: db.rollback() db.close() - print("sqlite error: " + str(e)) + self.log.error("sqlite error: " + str(e)) raise def register_handlers(self): @@ -202,7 +202,7 @@ class Achievements(Module): if event.source().find('!') >= 0: nick = irclib.nm_to_n(event.source()) userhost = irclib.nm_to_uh(event.source()) - print('good: ' + nick + ' ' + userhost + ' ' + event.eventtype() + ' ' + str(event.target())) + self.log.debug('good: ' + nick + ' ' + userhost + ' ' + event.eventtype() + ' ' + str(event.target())) if event.arguments(): msg = event.arguments()[0] msg_len = len(event.arguments()[0]) @@ -213,9 +213,9 @@ class Achievements(Module): player_id = self._get_or_add_player(nick, userhost) self._add_event(player_id, event.eventtype(), event.target(), msg, msg_len) else: - print('bad: ' + event.source() + ' ' + event.eventtype()) + self.log.debug('bad: ' + event.source() + ' ' + event.eventtype()) else: - print('really bad: ' + event.eventtype()) + self.log.debug('really bad: ' + event.eventtype()) def do(self, connection, event, nick, userhost, what, admin_unlocked): """Do stuff when commanded.""" @@ -265,7 +265,7 @@ class Achievements(Module): return result['id'] except sqlite3.Error as e: db.close() - print('sqlite error: ' + str(e)) + self.log.error('sqlite error: ' + str(e)) raise def _add_event(self, player_id, event, target, msg, msg_len): @@ -303,7 +303,7 @@ class Achievements(Module): return event_id except sqlite3.Error as e: db.close() - print('sqlite error: ' + str(e)) + self.log.error('sqlite error: ' + str(e)) raise def _get_achievements_settings(self): @@ -323,7 +323,7 @@ class Achievements(Module): return settings except sqlite3.Error as e: db.close() - print('sqlite error: ' + str(e)) + self.log.error('sqlite error: ' + str(e)) raise def _join_system(self, nick): @@ -339,7 +339,7 @@ class Achievements(Module): return nick + ' joined.' except sqlite3.Error as e: db.close() - print('sqlite error: ' + str(e)) + self.log.error('sqlite error: ' + str(e)) raise def _leave_system(self, nick): @@ -355,7 +355,7 @@ class Achievements(Module): return nick + ' left.' except sqlite3.Error as e: db.close() - print('sqlite error: ' + str(e)) + self.log.error('sqlite error: ' + str(e)) raise def _add_player_to_achievement_log(self, player_id, achievement_id): @@ -371,7 +371,7 @@ class Achievements(Module): return except sqlite3.Error as e: db.close() - print('sqlite error: ' + str(e)) + self.log.error('sqlite error: ' + str(e)) raise def _get_achievement_info(self, achievement): @@ -387,7 +387,7 @@ class Achievements(Module): return result['desc'] except sqlite3.Error as e: db.close() - print('sqlite error: ' + str(e)) + self.log.error('sqlite error: ' + str(e)) raise def _get_player_achievements(self, nick): @@ -412,7 +412,7 @@ class Achievements(Module): return achievements except sqlite3.Error as e: db.close() - print('sqlite error: ' + str(e)) + self.log.error('sqlite error: ' + str(e)) raise def _do_achievement_scan(self): @@ -446,7 +446,7 @@ class Achievements(Module): achievements = cursor.fetchall() for achievement in achievements: - print('checking achievement:[' + achievement['name'] + ']') + self.log.debug('checking achievement:[' + achievement['name'] + ']') query = ''' SELECT p.id, p.nick FROM achievements_player p WHERE p.nick IN ( @@ -465,7 +465,7 @@ class Achievements(Module): ach_achievers = cursor.fetchall() for ach_achiever in ach_achievers: - print('name:[' + ach_achiever['nick'] + '] achievement:[' + achievement['name'] + ']') + self.log.debug('name:[' + ach_achiever['nick'] + '] achievement:[' + achievement['name'] + ']') self._add_player_to_achievement_log(ach_achiever['id'], achievement['id']) achievers.append((ach_achiever['nick'], achievement['name'])) @@ -473,7 +473,7 @@ class Achievements(Module): return achievers except sqlite3.Error as e: db.close() - print('sqlite error: ' + str(e)) + self.log.error('sqlite error: ' + str(e)) raise # vi:tabstop=4:expandtab:autoindent diff --git a/modules/Acro.py b/modules/Acro.py index 7142e29..00b21a5 100644 --- a/modules/Acro.py +++ b/modules/Acro.py @@ -285,7 +285,7 @@ class Acro(Module): i = 0 for s in self.game.rounds[-1].sub_shuffle: - print(str(i) + " is " + s) + self.log.debug(str(i) + " is " + s) self.sendmsg(self.game.connection, self.game.channel, " {0:d}: {1:s}".format(i+1, self.game.rounds[-1].submissions[s])) i += 1 @@ -296,7 +296,7 @@ class Acro(Module): if self.game.state == 3: acros = self.game.rounds[-1].submissions if int(vote) > 0 and int(vote) <= len(acros): - print(vote + " is " + self.game.rounds[-1].sub_shuffle[int(vote)-1]) + self.log.debug(vote + " is " + self.game.rounds[-1].sub_shuffle[int(vote)-1]) key = self.game.rounds[-1].sub_shuffle[int(vote)-1] if key != nick: diff --git a/modules/Facts.py b/modules/Facts.py index 9572fd2..b16ab8f 100644 --- a/modules/Facts.py +++ b/modules/Facts.py @@ -62,7 +62,7 @@ class Facts(Module): except sqlite3.Error as e: db.rollback() db.close() - print("sqlite error: " + str(e)) + self.log.error("sqlite error: " + str(e)) raise def do(self, connection, event, nick, userhost, what, admin_unlocked): diff --git a/modules/Karma.py b/modules/Karma.py index 3c00f73..f7e2f9a 100644 --- a/modules/Karma.py +++ b/modules/Karma.py @@ -77,7 +77,7 @@ class Karma(Module): except sqlite3.Error as e: conn.rollback() conn.close() - print("sqlite error: " + str(e)) + self.log.error("sqlite error: " + str(e)) raise if (version < 2): conn = self.get_db() @@ -95,7 +95,7 @@ class Karma(Module): except sqlite3.Error as e: conn.rollback() conn.close() - print("sqlite error: " + str(e)) + self.log.error("sqlite error: " + str(e)) raise if (version < 3): conn = self.get_db() @@ -109,7 +109,7 @@ class Karma(Module): except sqlite3.Error as e: conn.rollback() conn.close() - print("sqlite error: " + str(e)) + self.log.error("sqlite error: " + str(e)) raise def do(self, connection, event, nick, userhost, what, admin_unlocked): diff --git a/modules/Markov.py b/modules/Markov.py index ecf25b8..60e02e6 100644 --- a/modules/Markov.py +++ b/modules/Markov.py @@ -135,7 +135,7 @@ class Markov(Module): except sqlite3.Error as e: db.rollback() db.close() - print('sqlite error: ' + str(e)) + self.log.error('sqlite error: ' + str(e)) raise def register_handlers(self): @@ -319,7 +319,7 @@ class Markov(Module): except sqlite3.Error as e: db.rollback() db.close() - print("sqlite error in Markov._learn_line: " + str(e)) + self.log.error("sqlite error in Markov._learn_line: " + str(e)) raise def _generate_line(self, target, line='', min_size=15, max_size=100): @@ -437,7 +437,7 @@ class Markov(Module): return values except sqlite3.Error as e: db.close() - print('sqlite error in Markov._retrieve_chains_for_key: ' + str(e)) + self.log.error('sqlite error in Markov._retrieve_chains_for_key: ' + str(e)) raise def _retrieve_k2_for_value(self, v, context_id): @@ -457,7 +457,7 @@ class Markov(Module): return values except sqlite3.Error as e: db.close() - print('sqlite error in Markov._retrieve_k2_for_value: ' + str(e)) + self.log.error('sqlite error in Markov._retrieve_k2_for_value: ' + str(e)) raise def _get_chatter_targets(self): @@ -473,7 +473,7 @@ class Markov(Module): return results except sqlite3.Error as e: db.close() - print('sqlite error in Markov._get_chatter_targets: ' + str(e)) + self.log.error('sqlite error in Markov._get_chatter_targets: ' + str(e)) raise def _get_one_chatter_target(self): @@ -500,7 +500,7 @@ class Markov(Module): return None except sqlite3.Error as e: db.close() - print('sqlite error in Markov._get_max_chain_id: ' + str(e)) + self.log.error('sqlite error in Markov._get_max_chain_id: ' + str(e)) raise def _get_context_id_for_target(self, target): @@ -526,7 +526,7 @@ class Markov(Module): return self._get_context_id_for_target(target) except sqlite3.Error as e: db.close() - print('sqlite error in Markov._get_context_id_for_target: ' + str(e)) + self.log.error('sqlite error in Markov._get_context_id_for_target: ' + str(e)) raise def _add_context_for_target(self, target): @@ -548,7 +548,7 @@ class Markov(Module): except sqlite3.Error as e: db.rollback() db.close() - print("sqlite error in Markov._add_context_for_target: " + str(e)) + self.log.error("sqlite error in Markov._add_context_for_target: " + str(e)) raise try: db = self.get_db() @@ -569,7 +569,7 @@ class Markov(Module): return self._get_context_id_for_target(target) except sqlite3.Error as e: db.close() - print('sqlite error in Markov._get_context_id_for_target: ' + str(e)) + self.log.error('sqlite error in Markov._get_context_id_for_target: ' + str(e)) raise # vi:tabstop=4:expandtab:autoindent diff --git a/modules/Pi.py b/modules/Pi.py index 7434f78..1f1af2e 100644 --- a/modules/Pi.py +++ b/modules/Pi.py @@ -66,7 +66,7 @@ class Pi(Module): except sqlite3.Error as e: db.rollback() db.close() - print("sqlite error: " + str(e)) + self.log.error("sqlite error: " + str(e)) raise def do(self, connection, event, nick, userhost, what, admin_unlocked): diff --git a/modules/Seen.py b/modules/Seen.py index d958ae5..7442a19 100644 --- a/modules/Seen.py +++ b/modules/Seen.py @@ -51,7 +51,7 @@ class Seen(Module): except sqlite3.Error as e: db.rollback() db.close() - print("sqlite error: " + str(e)) + self.log.error("sqlite error: " + str(e)) raise if version < 2: db = self.get_db() @@ -75,7 +75,7 @@ class Seen(Module): except sqlite3.Error as e: db.rollback() db.close() - print("sqlite error: " + str(e)) + self.log.error("sqlite error: " + str(e)) raise def do(self, connection, event, nick, userhost, what, admin_unlocked): @@ -96,7 +96,7 @@ class Seen(Module): except sqlite3.Error as e: db.rollback() db.close() - print("sqlite error: " + str(e)) + self.log.error("sqlite error: " + str(e)) raise match = re.search('^!seen\s+(\S+)$', what) @@ -117,7 +117,7 @@ class Seen(Module): except sqlite3.Error as e: db.rollback() db.close() - print("sqlite error: " + str(e)) + self.log.error("sqlite error: " + str(e)) raise # vi:tabstop=4:expandtab:autoindent diff --git a/modules/Storycraft.py b/modules/Storycraft.py index 404cf2b..3e3f171 100644 --- a/modules/Storycraft.py +++ b/modules/Storycraft.py @@ -159,7 +159,7 @@ class Storycraft(Module): except sqlite3.Error as e: db.rollback() db.close() - print("sqlite error: " + str(e)) + self.log.error("sqlite error: " + str(e)) raise def do(self, connection, event, nick, userhost, what, admin_unlocked): @@ -555,7 +555,7 @@ class Storycraft(Module): return game except sqlite3.Error as e: db.close() - print('sqlite error: ' + str(e)) + self.log.error('sqlite error: ' + str(e)) raise def _get_game_summary(self, game): @@ -616,7 +616,7 @@ class Storycraft(Module): return cur.lastrowid except sqlite3.Error as e: db.close() - print('sqlite error: ' + str(e)) + self.log.error('sqlite error: ' + str(e)) raise def _get_player_list_for_game(self, game_id): @@ -643,7 +643,7 @@ class Storycraft(Module): return players except sqlite3.Error as e: db.close() - print('sqlite error: ' + str(e)) + self.log.error('sqlite error: ' + str(e)) raise def _get_game_exists(self, game_id): @@ -666,7 +666,7 @@ class Storycraft(Module): return game_id except sqlite3.Error as e: db.close() - print('sqlite error: ' + str(e)) + self.log.error('sqlite error: ' + str(e)) raise def _pick_next_player(self, game_id): @@ -730,7 +730,7 @@ class Storycraft(Module): return cur.lastrowid except sqlite3.Error as e: db.close() - print('sqlite error: ' + str(e)) + self.log.error('sqlite error: ' + str(e)) raise def _end_game(self, game_id): @@ -749,7 +749,7 @@ class Storycraft(Module): return game_id except sqlite3.Error as e: db.close() - print('sqlite error: ' + str(e)) + self.log.error('sqlite error: ' + str(e)) raise def _get_player_by_id(self, player_id): @@ -773,7 +773,7 @@ class Storycraft(Module): return player except sqlite3.Error as e: db.close() - print('sqlite error: ' + str(e)) + self.log.error('sqlite error: ' + str(e)) raise def _get_player_by_userhost_in_game(self, game_id, userhost): @@ -797,7 +797,7 @@ class Storycraft(Module): return player except sqlite3.Error as e: db.close() - print('sqlite error: ' + str(e)) + self.log.error('sqlite error: ' + str(e)) raise def _get_completed_games(self): @@ -853,7 +853,7 @@ class Storycraft(Module): return games except sqlite3.Error as e: db.close() - print('sqlite error: ' + str(e)) + self.log.error('sqlite error: ' + str(e)) raise def _get_games_waiting_on_player(self, player_nick): @@ -905,7 +905,7 @@ class Storycraft(Module): return games except sqlite3.Error as e: db.close() - print('sqlite error: ' + str(e)) + self.log.error('sqlite error: ' + str(e)) raise def _get_games_of_type(self, game_type): @@ -944,7 +944,7 @@ class Storycraft(Module): return games except sqlite3.Error as e: db.close() - print('sqlite error: ' + str(e)) + self.log.error('sqlite error: ' + str(e)) raise def _add_player_to_game(self, game_id, nick, userhost): @@ -963,7 +963,7 @@ class Storycraft(Module): return cur.lastrowid except sqlite3.Error as e: db.close() - print('sqlite error: ' + str(e)) + self.log.error('sqlite error: ' + str(e)) raise def _get_player_exists_in_game(self, game_id, userhost): @@ -1009,7 +1009,7 @@ class Storycraft(Module): count = result['COUNT(*)'] except sqlite3.Error as e: db.close() - print('sqlite error: ' + str(e)) + self.log.error('sqlite error: ' + str(e)) raise return count @@ -1029,7 +1029,7 @@ class Storycraft(Module): concurrency = result['concurrent_games'] except sqlite3.Error as e: db.close() - print('sqlite error: ' + str(e)) + self.log.error('sqlite error: ' + str(e)) raise return concurrency @@ -1063,7 +1063,7 @@ class Storycraft(Module): return lines except sqlite3.Error as e: db.close() - print('sqlite error: ' + str(e)) + self.log.error('sqlite error: ' + str(e)) raise def _update_line(self, line_id, input_line): @@ -1081,7 +1081,7 @@ class Storycraft(Module): return line_id except sqlite3.Error as e: db.close() - print('sqlite error: ' + str(e)) + self.log.error('sqlite error: ' + str(e)) raise def _export_game_to_disk(self, game, lines): @@ -1144,7 +1144,7 @@ class Storycraft(Module): return settings except sqlite3.Error as e: db.close() - print('sqlite error: ' + str(e)) + self.log.error('sqlite error: ' + str(e)) raise # vi:tabstop=4:expandtab:autoindent diff --git a/modules/Twitter.py b/modules/Twitter.py index 1fd83ff..eb49d3f 100644 --- a/modules/Twitter.py +++ b/modules/Twitter.py @@ -81,9 +81,9 @@ class Twitter(Module): # print timeline stuff. this will set up the appropriate timer self._check_self_timeline() - print("Logged in to Twitter with saved token.") + self.log.debug("Logged in to Twitter with saved token.") else: - print("Could not log in to Twitter with saved token.") + self.log.error("Could not log in to Twitter with saved token.") self.twit = twitter.Api() else: # create a default twitter API account, in case we never auth @@ -113,7 +113,7 @@ class Twitter(Module): except sqlite3.Error as e: db.rollback() db.close() - print("sqlite error: " + str(e)) + self.log.error("sqlite error: " + str(e)) raise if version < 2: db = self.get_db() @@ -129,7 +129,7 @@ class Twitter(Module): except sqlite3.Error as e: db.rollback() db.close() - print("sqlite error: " + str(e)) + self.log.error("sqlite error: " + str(e)) raise def shutdown(self): @@ -200,7 +200,7 @@ class Twitter(Module): else: index = 0 except ValueError as e: - print("Couldn't convert index: " + str(e)) + self.log.error("Couldn't convert index: " + str(e)) index = 0 count = (-1*index) + 1 @@ -310,7 +310,7 @@ class Twitter(Module): try: return self.twit.VerifyCredentials() except Exception as e: - print("Exception in checking login status: " + str(e)) + self.log.error("Exception in checking login status: " + str(e)) return None def _log_in_to_twitter(self, oauth_token, oauth_token_secret): @@ -405,7 +405,7 @@ class Twitter(Module): return result['since_id'] except sqlite3.Error as e: db.close() - print("sqlite error: " + str(e)) + self.log.error("sqlite error: " + str(e)) raise def _get_output_channel(self): @@ -421,7 +421,7 @@ class Twitter(Module): return result['output_channel'] except sqlite3.Error as e: db.close() - print("sqlite error: " + str(e)) + self.log.error("sqlite error: " + str(e)) raise def _set_last_since_id(self, since_id): @@ -436,7 +436,7 @@ class Twitter(Module): db.close() except sqlite3.Error as e: db.close() - print("sqlite error: " + str(e)) + self.log.error("sqlite error: " + str(e)) raise def _get_latest_tweet_id(self, tweets, since_id): @@ -461,7 +461,7 @@ class Twitter(Module): db.close() except sqlite3.Error as e: db.close() - print("sqlite error: " + str(e)) + self.log.error("sqlite error: " + str(e)) raise def _retrieve_stored_auth_tokens(self): @@ -477,7 +477,7 @@ class Twitter(Module): return (result['oauth_token'], result['oauth_token_secret']) except sqlite3.Error as e: db.close() - print("sqlite error: " + str(e)) + self.log.error("sqlite error: " + str(e)) raise