diff options
Diffstat (limited to 'nikola/plugins/loghandler')
| -rw-r--r-- | nikola/plugins/loghandler/smtp.plugin | 9 | ||||
| -rw-r--r-- | nikola/plugins/loghandler/smtp.py | 54 | ||||
| -rw-r--r-- | nikola/plugins/loghandler/stderr.plugin | 9 | ||||
| -rw-r--r-- | nikola/plugins/loghandler/stderr.py | 50 |
4 files changed, 122 insertions, 0 deletions
diff --git a/nikola/plugins/loghandler/smtp.plugin b/nikola/plugins/loghandler/smtp.plugin new file mode 100644 index 0000000..e914b3d --- /dev/null +++ b/nikola/plugins/loghandler/smtp.plugin @@ -0,0 +1,9 @@ +[Core] +Name = smtp +Module = smtp + +[Documentation] +Author = Daniel Devine +Version = 0.1 +Website = http://getnikola.com +Description = Log over smtp (email). diff --git a/nikola/plugins/loghandler/smtp.py b/nikola/plugins/loghandler/smtp.py new file mode 100644 index 0000000..deb8f4e --- /dev/null +++ b/nikola/plugins/loghandler/smtp.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- + +# Copyright © 2012-2013 Daniel Devine and others. + +# Permission is hereby granted, free of charge, to any +# person obtaining a copy of this software and associated +# documentation files (the "Software"), to deal in the +# Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the +# Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice +# shall be included in all copies or substantial portions of +# the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY +# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +# PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS +# OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR +# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +from nikola.plugin_categories import SignalHandler +from blinker import signal +import logbook + + +class SmtpHandler(SignalHandler): + name = 'smtp' + + def attach_handler(self, sender): + """Add the handler to a list of handlers that are attached when get_logger() is called..""" + smtpconf = self.site.config.get('LOGGING_HANDLERS').get('smtp') + if smtpconf: + smtpconf['format_string'] = '''\ +Subject: {record.level_name}: {record.channel} + +{record.message} +''' + self.site.loghandlers.append(logbook.MailHandler( + smtpconf.pop('from_addr'), + smtpconf.pop('recipients'), + **smtpconf + )) + + def set_site(self, site): + self.site = site + + ready = signal('sighandlers_loaded') + ready.connect(self.attach_handler) diff --git a/nikola/plugins/loghandler/stderr.plugin b/nikola/plugins/loghandler/stderr.plugin new file mode 100644 index 0000000..211d2b4 --- /dev/null +++ b/nikola/plugins/loghandler/stderr.plugin @@ -0,0 +1,9 @@ +[Core] +Name = stderr +Module = stderr + +[Documentation] +Author = Daniel Devine +Version = 0.1 +Website = http://getnikola.com +Description = Log to stderr, the default logger. diff --git a/nikola/plugins/loghandler/stderr.py b/nikola/plugins/loghandler/stderr.py new file mode 100644 index 0000000..71f1de5 --- /dev/null +++ b/nikola/plugins/loghandler/stderr.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- + +# Copyright © 2012-2013 Daniel Devine and others. + +# Permission is hereby granted, free of charge, to any +# person obtaining a copy of this software and associated +# documentation files (the "Software"), to deal in the +# Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the +# Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice +# shall be included in all copies or substantial portions of +# the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY +# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +# PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS +# OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR +# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +from nikola.plugin_categories import SignalHandler +from blinker import signal +import logbook +import os + + +class StderrHandler(SignalHandler): + """Logs messages to stderr.""" + name = 'stderr' + + def attach_handler(self, sender): + """Attach the handler to the logger.""" + conf = self.site.config.get('LOGGING_HANDLERS').get('stderr') + if conf or os.getenv('NIKOLA_DEBUG'): + self.site.loghandlers.append(logbook.StderrHandler( + level='DEBUG' if os.getenv('NIKOLA_DEBUG') else conf.get('loglevel', 'WARNING').upper(), + format_string=u'[{record.time:%Y-%m-%dT%H:%M:%SZ}] {record.level_name}: {record.channel}: {record.message}' + )) + + def set_site(self, site): + self.site = site + + ready = signal('sighandlers_loaded') + ready.connect(self.attach_handler) |
