Improve logging by using the native journal module
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 5 May 2015 17:58:58 +0000 (17:58 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 5 May 2015 17:59:20 +0000 (17:59 +0000)
Makefile.am
src/collecty/__init__.py
src/collecty/daemon.py
src/collecty/logger.py [new file with mode: 0644]

index e0a882a..3bd0715 100644 (file)
@@ -71,6 +71,7 @@ collecty_PYTHON = \
        src/collecty/daemon.py \
        src/collecty/errors.py \
        src/collecty/i18n.py \
+       src/collecty/logger.py \
        src/collecty/ping.py
 
 collectydir = $(pythondir)/collecty
index 187f6ab..ab16c12 100644 (file)
 ###############################################################################
 
 # Initialize logging.
-import logging
-log = logging.getLogger("collecty")
-log.level = logging.DEBUG
-
-handler = logging.StreamHandler()
-handler.setLevel(logging.DEBUG)
-log.handlers.append(handler)
-
-formatter = logging.Formatter("%(asctime)s | %(name)-20s - %(levelname)-6s | %(message)s")
-handler.setFormatter(formatter)
+import logger
 
 from client import CollectyClient
 from daemon import Collecty
index 00a4431..8f31021 100644 (file)
@@ -34,6 +34,10 @@ class Collecty(object):
        SUBMIT_INTERVAL = 300
 
        def __init__(self, debug=False):
+               # Enable debug logging when running in debug mode
+               if debug:
+                       log.setLevel(logging.DEBUG)
+
                self.data_sources = []
 
                # Indicates whether this process should be running or not.
diff --git a/src/collecty/logger.py b/src/collecty/logger.py
new file mode 100644 (file)
index 0000000..f1c732c
--- /dev/null
@@ -0,0 +1,41 @@
+#!/usr/bin/python
+###############################################################################
+#                                                                             #
+# collecty - A system statistics collection daemon for IPFire                 #
+# Copyright (C) 2015 IPFire development team                                  #
+#                                                                             #
+# This program is free software: you can redistribute it and/or modify        #
+# it under the terms of the GNU General Public License as published by        #
+# the Free Software Foundation, either version 3 of the License, or           #
+# (at your option) any later version.                                         #
+#                                                                             #
+# This program 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 General Public License for more details.                                #
+#                                                                             #
+# You should have received a copy of the GNU General Public License           #
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+###############################################################################
+
+import logging
+
+# Initialize logging.
+log = logging.getLogger("collecty")
+log.propagate = False
+
+# The default log level is INFO
+log.setLevel(logging.INFO)
+
+# We try using the native journald log handler. If that is unavailable,
+# we dump everything on the console
+try:
+       import journal
+       handler = journal.JournalHandler()
+
+except ImportError:
+       handler = logging.StreamHandler()
+
+handler.setLevel(logging.DEBUG)
+log.addHandler(handler)