Merge authors:
  Siegfried Gevatter (rainct)
------------------------------------------------------------
revno: 407 [merge]
committer: Siegfried-Angel Gevatter Pujals <siegfr...@gevatter.com>
branch nick: bluebird
timestamp: Sun 2012-02-19 21:47:38 +0100
message:
  Move logging code from zeitgeist-daemon to a new logging.vala and install
  a custom log handler (adding color and timestamps).
added:
  src/logging.vala
modified:
  src/Makefile.am
  src/zeitgeist-daemon.vala


--
lp:zeitgeist
https://code.launchpad.net/~zeitgeist/zeitgeist/bluebird

Your team Zeitgeist Framework Team is subscribed to branch lp:zeitgeist.
To unsubscribe from this branch go to 
https://code.launchpad.net/~zeitgeist/zeitgeist/bluebird/+edit-subscription
=== modified file 'src/Makefile.am'
--- src/Makefile.am	2012-02-02 18:57:35 +0000
+++ src/Makefile.am	2012-02-15 19:55:59 +0000
@@ -37,6 +37,7 @@
 	extension.vala \
 	extension-collection.vala \
 	extension-store.vala \
+	logging.vala \
 	notify.vala \
 	sql.vala \
 	utils.vala \

=== added file 'src/logging.vala'
--- src/logging.vala	1970-01-01 00:00:00 +0000
+++ src/logging.vala	2012-02-19 20:47:38 +0000
@@ -0,0 +1,140 @@
+/* logging.vala
+ *
+ * Copyright © 2012 Canonical Ltd.
+ *             By Siegfried-A. Gevatter <siegfried.gevat...@collabora.co.uk>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 2.1 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 Lesser General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace Zeitgeist
+{
+    namespace Logging
+    {
+
+        private const string BLUE = "\x1b[34m";
+        private const string GREEN = "\x1b[32m";
+        private const string RED = "\x1b[31m";
+        private const string YELLOW = "\x1b[33m";
+        private const string RESET = "\x1b[0m";
+
+        private string get_log_level_string (LogLevelFlags log_levels,
+            out string color)
+        {
+            string log_level;
+
+            if ((log_levels & LogLevelFlags.LEVEL_ERROR) != 0)
+            {
+                log_level = "ERROR";
+                color = RED;
+            }
+            else if ((log_levels & LogLevelFlags.LEVEL_CRITICAL) != 0)
+            {
+                log_level = "CRITICAL";
+                color = RED;
+            }
+            else if ((log_levels & LogLevelFlags.LEVEL_WARNING) != 0)
+            {
+                log_level = "WARNING";
+                color = RED;
+            }
+            else if ((log_levels & LogLevelFlags.LEVEL_MESSAGE) != 0)
+            {
+                log_level = "MESSAGE";
+                color = BLUE;
+            }
+            else if ((log_levels & LogLevelFlags.LEVEL_INFO) != 0)
+            {
+                log_level = "INFO";
+                color = BLUE;
+            }
+            else if ((log_levels & LogLevelFlags.LEVEL_DEBUG) != 0)
+            {
+                log_level = "DEBUG";
+                color = GREEN;
+            }
+            else
+            {
+                log_level = "UNKNOWN";
+                color = BLUE;
+            }
+
+            return log_level;
+        }
+
+        private void log_handler (string? log_domain, LogLevelFlags log_levels,
+            string message)
+        {
+            string color;
+            string log_level = get_log_level_string (log_levels, out color);
+            string timestamp = TimeVal ().to_iso8601 ().substring (11, 15);
+            //string datestamp = new DateTime.now_local ().format (
+            //    "%Y-%m-%d %H:%M:%S");
+            // FIXME: get PID
+
+            unowned FileStream output;
+            if (log_levels >= LogLevelFlags.LEVEL_MESSAGE)
+                output = stdout; // MESSAGE, INFO or DEBUG
+            else
+                output = stderr;
+
+            // Print to console
+            output.printf ("%s[%s %s]%s %s\n", color, timestamp,
+                log_level, RESET, message);
+
+            // Log to file
+            // FIXME:
+            //printf ("[%s] - %s - %s\n", datestamp, log_level, message);
+        }
+
+        public void setup_logging (string? log_level)
+        {
+            LogLevelFlags discarded = LogLevelFlags.LEVEL_DEBUG;
+            if (log_level != null)
+            {
+                var ld = LogLevelFlags.LEVEL_DEBUG;
+                var li = LogLevelFlags.LEVEL_INFO;
+                var lm = LogLevelFlags.LEVEL_MESSAGE;
+                var lw = LogLevelFlags.LEVEL_WARNING;
+                var lc = LogLevelFlags.LEVEL_CRITICAL;
+                switch (log_level.up ())
+                {
+                    case "DEBUG":
+                        discarded = 0;
+                        break;
+                    case "INFO":
+                        discarded = ld;
+                        break;
+                    case "WARNING":
+                        discarded = ld | li | lm;
+                        break;
+                    case "CRITICAL":
+                        discarded = ld | li | lm | lw;
+                        break;
+                    case "ERROR":
+                        discarded = ld | li | lm | lw | lc;
+                        break;
+                }
+            }
+            if (discarded != 0)
+                Log.set_handler (null, discarded, () => {});
+
+            LogLevelFlags logged = ~discarded & ~LogLevelFlags.FLAG_RECURSION;
+            Log.set_handler (null, logged, log_handler);
+        }
+
+    }
+}
+
+// vim:expandtab:ts=4:sw=4

=== modified file 'src/zeitgeist-daemon.vala'
--- src/zeitgeist-daemon.vala	2012-02-07 12:46:46 +0000
+++ src/zeitgeist-daemon.vala	2012-02-15 19:55:59 +0000
@@ -5,6 +5,8 @@
  * Copyright © 2011 Collabora Ltd.
  *             By Siegfried-Angel Gevatter Pujals <siegfr...@gevatter.com>
  *             By Seif Lotfy <s...@lotfy.com>
+ * Copyright © 2012 Canonical Ltd.
+ *             By Siegfried-A. Gevatter <siegfried.gevat...@collabora.co.uk>
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Lesser General Public License as published by
@@ -449,38 +451,8 @@
 
                     return 0;
                 }
-                
-                LogLevelFlags discarded = LogLevelFlags.LEVEL_DEBUG;
-                if (log_level != null)
-                {
-                    var ld = LogLevelFlags.LEVEL_DEBUG;
-                    var li = LogLevelFlags.LEVEL_INFO;
-                    var lm = LogLevelFlags.LEVEL_MESSAGE;
-                    var lw = LogLevelFlags.LEVEL_WARNING;
-                    var lc = LogLevelFlags.LEVEL_CRITICAL;
-                    switch (log_level.up ())
-                    {
-                        case "DEBUG":
-                            discarded = 0;
-                            break;
-                        case "INFO":
-                            discarded = ld;
-                            break;
-                        case "WARNING":
-                            discarded = ld | li | lm;
-                            break;
-                        case "CRITICAL":
-                            discarded = ld | li | lm | lw;
-                            break;
-                        case "ERROR":
-                            discarded = ld | li | lm | lw | lc;
-                            break;
-                    }
-                }
-                if (discarded != 0)
-                {
-                    Log.set_handler ("", discarded, () => {});
-                }
+
+                Logging.setup_logging (log_level);
 
                 run ();
             }

_______________________________________________
Mailing list: https://launchpad.net/~zeitgeist
Post to     : zeitgeist@lists.launchpad.net
Unsubscribe : https://launchpad.net/~zeitgeist
More help   : https://help.launchpad.net/ListHelp

Reply via email to