Merlijn van Deen has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/280668

Change subject: Port wikibugs logging to forrestbot
......................................................................

Port wikibugs logging to forrestbot

Take optional --logfile argument to specify log file location. Log files
are private by default (might leak private information?) and log on
DEBUG level, except for requests (INFO level)

Change-Id: Ieadf87faf001e2660d6788053a48d2b70b61114f
---
M forrestbot.py
A wblogging.py
2 files changed, 55 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/labs/tools/forrestbot 
refs/changes/68/280668/1

diff --git a/forrestbot.py b/forrestbot.py
index fabce93..1889fd2 100644
--- a/forrestbot.py
+++ b/forrestbot.py
@@ -8,6 +8,14 @@
 import requests
 
 import logging
+from wblogging import LoggingSetupParser
+
+parser = LoggingSetupParser(
+    description="Process changesets and add release tags as required",
+)
+args = parser.parse_args()
+
+logging.getLogger('requests').setLevel(logging.INFO)
 logger = logging.getLogger('forrestbot')
 
 import gerrit_rest
diff --git a/wblogging.py b/wblogging.py
new file mode 100644
index 0000000..318691b
--- /dev/null
+++ b/wblogging.py
@@ -0,0 +1,47 @@
+import os
+import sys
+import logging
+import logging.handlers
+import argparse
+
+
+def private_open(file, flags, dir_fd=None):
+    return os.open(file, flags, mode=0o600, dir_fd=dir_fd)
+
+
+class 
PrivateTimedRotatingFileHandler(logging.handlers.TimedRotatingFileHandler):
+    def _open(self):
+        return open(self.baseFilename, self.mode, encoding=self.encoding, 
opener=private_open)
+
+
+class LoggingSetupParser(argparse.ArgumentParser):
+    def __init__(self, *args, **kwargs):
+        super(LoggingSetupParser, self).__init__(*args, **kwargs)
+        self.add_argument(
+            "--logfile", dest='logfile', default=None,
+            help="Log to this (rotated) log file; if not provided, log to 
stdout",
+        )
+
+    def parse_args(self, *args, **kwargs):
+        result = super(LoggingSetupParser, self).parse_args(*args, **kwargs)
+        self.set_up_logging(result)
+        return result
+
+    def set_up_logging(self, args):
+        logger = logging.getLogger()
+        logger.setLevel(logging.DEBUG)
+
+        if args.logfile:
+            handler = PrivateTimedRotatingFileHandler(
+                args.logfile,
+                when='midnight', backupCount=7,
+                utc=True,
+                encoding='utf-8',
+            )
+            print("Logging to %s" % args.logfile)
+        else:
+            handler = logging.StreamHandler(sys.stdout)
+        handler.setLevel(logging.DEBUG)
+        formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s 
- %(message)s')
+        handler.setFormatter(formatter)
+        logger.addHandler(handler)

-- 
To view, visit https://gerrit.wikimedia.org/r/280668
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ieadf87faf001e2660d6788053a48d2b70b61114f
Gerrit-PatchSet: 1
Gerrit-Project: labs/tools/forrestbot
Gerrit-Branch: master
Gerrit-Owner: Merlijn van Deen <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to