aboutsummaryrefslogtreecommitdiff
path: root/src/Logging.py
diff options
context:
space:
mode:
authorGravatar jesopo2018-09-24 15:13:27 +0100
committerGravatar jesopo2018-09-24 15:13:27 +0100
commitecb9d7cb3f4435457560e03201bbed57a469d548 (patch)
tree5a010f97c209558cdd2d40327d41e6806aedde94 /src/Logging.py
parentRemove empty spaces in coins.py (diff)
signature
Move most code in root directory to src/
Diffstat (limited to 'src/Logging.py')
-rw-r--r--src/Logging.py48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/Logging.py b/src/Logging.py
new file mode 100644
index 00000000..3f5815d6
--- /dev/null
+++ b/src/Logging.py
@@ -0,0 +1,48 @@
+import logging, logging.handlers, os, sys, time
+
+class BitBotFormatter(logging.Formatter):
+ def formatTime(self, record, datefmt=None):
+ ct = self.converter(record.created)
+ if datefmt:
+ if "%f" in datefmt:
+ msec = "%03d" % record.msecs
+ datefmt = datefmt.replace("%f", msec)
+ s = time.strftime(datefmt, ct)
+ else:
+ t = time.strftime("%Y-%m-%d %H:%M:%S", ct)
+ s = "%s.%03d" % (t, record.msecs)
+ return s
+
+class Log(object):
+ def __init__(self, bot, directory, filename):
+ self.logger = logging.getLogger(__name__)
+ self.logger.setLevel(logging.DEBUG)
+
+ formatter = BitBotFormatter(
+ "%(asctime)s [%(levelname)s] %(message)s",
+ "%Y-%m-%dT%H:%M:%S.%fZ")
+ formatter.converter = time.gmtime
+
+ stdout_handler = logging.StreamHandler(sys.stdout)
+ stdout_handler.setLevel(logging.INFO)
+ stdout_handler.setFormatter(formatter)
+ self.logger.addHandler(stdout_handler)
+
+ file_handler = logging.handlers.TimedRotatingFileHandler(
+ os.path.join(directory, filename), when="midnight", backupCount=5)
+ file_handler.setLevel(logging.DEBUG)
+ file_handler.setFormatter(formatter)
+ self.logger.addHandler(file_handler)
+
+ def debug(self, message, params, **kwargs):
+ self._log(message, params, logging.DEBUG, kwargs)
+ def info(self, message, params, **kwargs):
+ self._log(message, params, logging.INFO, kwargs)
+ def warn(self, message, params, **kwargs):
+ self._log(message, params, logging.WARN, kwargs)
+ def error(self, message, params, **kwargs):
+ self._log(message, params, logging.ERROR, kwargs)
+ def critical(self, message, params, **kwargs):
+ self._log(message, params, logging.CRITICAL, kwargs)
+ def _log(self, message, params, level, kwargs):
+ self.logger.log(level, message, *params, **kwargs)