summaryrefslogtreecommitdiff
path: root/service/src/pixelated/config/logger.py
diff options
context:
space:
mode:
Diffstat (limited to 'service/src/pixelated/config/logger.py')
-rw-r--r--service/src/pixelated/config/logger.py55
1 files changed, 55 insertions, 0 deletions
diff --git a/service/src/pixelated/config/logger.py b/service/src/pixelated/config/logger.py
new file mode 100644
index 00000000..bc4ab8d4
--- /dev/null
+++ b/service/src/pixelated/config/logger.py
@@ -0,0 +1,55 @@
+#
+# Copyright (c) 2014 ThoughtWorks, Inc.
+#
+# Pixelated is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Pixelated is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with Pixelated. If not, see <http://www.gnu.org/licenses/>.
+
+import logging
+import os
+import sys
+import time
+from twisted.logger import globalLogBeginner, FileLogObserver
+
+
+class PrivateKeyFilter(logging.Filter):
+
+ def filter(self, record):
+ if '-----BEGIN PGP PRIVATE KEY BLOCK-----' in record.msg:
+ record.msg = '*** private key removed by %s.%s ***' % (type(self).__module__, type(self).__name__)
+ return True
+
+
+def init(debug=False):
+ debug_enabled = debug or os.environ.get('DEBUG', False)
+ logging_level = logging.DEBUG if debug_enabled else logging.INFO
+
+ logging.basicConfig(level=logging_level,
+ format='%(asctime)s [%(name)s] %(levelname)s %(message)s',
+ datefmt='%Y-%m-%d %H:%M:%S',
+ filemode='a')
+
+ logging.getLogger('gnupg').setLevel(logging.WARN)
+ logging.getLogger('gnupg').addFilter(PrivateKeyFilter())
+
+ def formatter(event):
+ try:
+ event['log_time'] = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(event['log_time']))
+ event['log_level'] = event['log_level'].name.upper()
+ event['log_format'] = str(event['log_format']) + '\n' if event.get('log_format') else ''
+ logstring = u'{log_time} [{log_namespace}] {log_level} ' + event['log_format']
+ return logstring.format(**event)
+ except Exception as e:
+ return "Error while formatting log event: {!r}\nOriginal event: {!r}\n".format(e, event)
+
+ observers = [FileLogObserver(sys.stdout, formatter)]
+ globalLogBeginner.beginLoggingTo(observers)