elementaryart team mailing list archive
-
elementaryart team
-
Mailing list archive
-
Message #02123
[Merge] lp:~marcus-lundgren/granite/fix-1008009-1012077 into lp:granite
Marcus Lundgren has proposed merging lp:~marcus-lundgren/granite/fix-1008009-1012077 into lp:granite.
Requested reviews:
elementary Pantheon team (elementary-pantheon)
Related bugs:
Bug #1008009 in Files: "files hang when I rename a folder in list view"
https://bugs.launchpad.net/pantheon-files/+bug/1008009
Bug #1012077 in Files: "crashes on rename file"
https://bugs.launchpad.net/pantheon-files/+bug/1012077
For more details, see:
https://code.launchpad.net/~marcus-lundgren/granite/fix-1008009-1012077/+merge/109945
--
https://code.launchpad.net/~marcus-lundgren/granite/fix-1008009-1012077/+merge/109945
Your team elementaryart (old) is subscribed to branch lp:granite.
=== modified file 'lib/Services/Logger.vala'
--- lib/Services/Logger.vala 2011-11-08 21:45:07 +0000
+++ lib/Services/Logger.vala 2012-06-12 21:35:29 +0000
@@ -17,210 +17,155 @@
namespace Granite.Services {
- public enum LogLevel {
- DEBUG,
- INFO,
- NOTIFY,
- WARN,
- ERROR,
- FATAL,
- }
-
- enum ConsoleColor {
- BLACK,
- RED,
- GREEN,
- YELLOW,
- BLUE,
- MAGENTA,
- CYAN,
- WHITE,
- }
-
- /**
- * An enhanced GLib logger which all {@link Granite.Application}s use.
- */
- public class Logger : GLib.Object {
-
- class LogMessage : GLib.Object {
-
- public LogLevel Level { get; private set; }
- public string Message { get; private set; }
-
- public LogMessage (LogLevel level, string message) {
- Level = level;
- Message = message;
- }
-
- }
-
- public static LogLevel DisplayLevel { get; set; default = LogLevel.WARN; }
-
- static string AppName { get; set; }
-
- static Object queue_lock = null;
-
- static List<LogMessage> log_queue;
- static bool is_writing;
-
- static Regex re;
-
- /**
- * Initializes the logger with the supplied application name.
- *
- * @param app_name the name of the app to display in the logs
- */
- public static void initialize (string app_name) {
-
- AppName = app_name;
- is_writing = false;
- log_queue = new List<LogMessage> ();
- try {
- re = new Regex ("""(.*)\.vala(:\d+): (.*)""");
- } catch { }
-
- Log.set_default_handler (glib_log_func);
- }
-
- static string format_message (string msg) {
-
- if (re != null && re.match (msg)) {
- var parts = re.split (msg);
- return "[%s%s] %s".printf (parts[1], parts[2], parts[3]);
- }
- return msg;
- }
-
- /**
- * Convenience method to write a message with LogLevel.NOTIFY.
- *
- * @param msg the message to write to the log
- */
- public static void notification (string msg) {
- write (LogLevel.NOTIFY, format_message (msg));
- }
-
- static string get_time () {
-
- var now = new DateTime.now_local ();
- return "%.2d:%.2d:%.2d.%.6d".printf (now.get_hour (), now.get_minute (), now.get_second (), now.get_microsecond ());
- }
-
- static void write (LogLevel level, string msg) {
-
- if (level < DisplayLevel)
- return;
-
- if (is_writing) {
- lock (queue_lock)
- log_queue.append (new LogMessage (level, msg));
- } else {
- is_writing = true;
-
- if (log_queue.length () > 0) {
- var logs = log_queue.copy ();
- lock (queue_lock)
- log_queue = new List<LogMessage> ();
-
- foreach (var log in logs)
- print_log (log);
- }
-
- print_log (new LogMessage (level, msg));
-
- is_writing = false;
- }
- }
-
- static void print_log (LogMessage log) {
-
- set_color_for_level (log.Level);
- stdout.printf ("[%s %s]", log.Level.to_string ().substring (27), get_time ());
-
- reset_color ();
- stdout.printf (" %s\n", log.Message);
- }
-
- static void set_color_for_level (LogLevel level) {
-
- switch (level) {
- case LogLevel.DEBUG:
- set_foreground (ConsoleColor.GREEN);
- break;
- case LogLevel.INFO:
- set_foreground (ConsoleColor.BLUE);
- break;
- case LogLevel.NOTIFY:
- set_foreground (ConsoleColor.MAGENTA);
- break;
- case LogLevel.WARN:
- set_foreground (ConsoleColor.YELLOW);
- break;
- case LogLevel.ERROR:
- set_foreground (ConsoleColor.RED);
- break;
- case LogLevel.FATAL:
- set_background (ConsoleColor.RED);
- set_foreground (ConsoleColor.WHITE);
- break;
- }
- }
-
- static void reset_color () {
- stdout.printf ("\x001b[0m");
- }
-
- static void set_foreground (ConsoleColor color) {
- set_color (color, true);
- }
-
- static void set_background (ConsoleColor color) {
- set_color (color, false);
- }
-
- static void set_color (ConsoleColor color, bool isForeground) {
-
- var color_code = color + 30 + 60;
- if (!isForeground)
- color_code += 10;
- stdout.printf ("\x001b[%dm", color_code);
- }
-
- static void glib_log_func (string? d, LogLevelFlags flags, string msg) {
- var domain = "";
- if (d != null)
- domain = "[%s] ".printf (d);
-
- var message = msg.replace ("\n", "").replace ("\r", "");
- message = "%s%s".printf (domain, message);
-
- switch (flags) {
- case LogLevelFlags.LEVEL_CRITICAL:
- write (LogLevel.FATAL, format_message (message));
- write (LogLevel.FATAL, format_message (AppName + " will not function properly."));
- break;
-
- case LogLevelFlags.LEVEL_ERROR:
- write (LogLevel.ERROR, format_message (message));
- break;
-
- case LogLevelFlags.LEVEL_INFO:
- case LogLevelFlags.LEVEL_MESSAGE:
- write (LogLevel.INFO, format_message (message));
- break;
-
- case LogLevelFlags.LEVEL_DEBUG:
- write (LogLevel.DEBUG, format_message (message));
- break;
-
- case LogLevelFlags.LEVEL_WARNING:
- default:
- write (LogLevel.WARN, format_message (message));
- break;
- }
- }
-
- }
-
+ public enum LogLevel {
+ DEBUG,
+ INFO,
+ NOTIFY,
+ WARN,
+ ERROR,
+ FATAL,
+ }
+
+ enum ConsoleColor {
+ BLACK,
+ RED,
+ GREEN,
+ YELLOW,
+ BLUE,
+ MAGENTA,
+ CYAN,
+ WHITE,
+ }
+
+ public class Logger : GLib.Object {
+
+ public static LogLevel DisplayLevel { get; set; default = LogLevel.WARN; }
+
+ static string AppName { get; set; }
+
+ static Regex re;
+
+ public static void initialize (string app_name) {
+
+ AppName = app_name;
+ /*try {
+ re = new Regex ("""(.*)\.vala(:\d+): (.*)""");
+ } catch { }*/
+
+ Log.set_default_handler (glib_log_func);
+ }
+
+ static string format_message (string msg) {
+
+ if (re != null && re.match (msg)) {
+ var parts = re.split (msg);
+ return "[%s%s] %s".printf (parts[1], parts[2], parts[3]);
+ }
+ return msg;
+ }
+
+ public static void notification (string msg) {
+ write (LogLevel.NOTIFY, format_message (msg));
+ }
+
+ static string get_time () {
+
+ var now = new DateTime.now_local ();
+ return "%.2d:%.2d:%.2d.%.6d".printf (now.get_hour (), now.get_minute (), now.get_second (), now.get_microsecond ());
+ }
+
+ static void write (LogLevel level, string msg) {
+
+ if (level < DisplayLevel)
+ return;
+
+ set_color_for_level (level);
+ stdout.printf ("[%s %s]", level.to_string ().substring (16), get_time ());
+
+ reset_color ();
+ stdout.printf (" %s\n", msg);
+ }
+
+ static void set_color_for_level (LogLevel level) {
+
+ switch (level) {
+ case LogLevel.DEBUG:
+ set_foreground (ConsoleColor.GREEN);
+ break;
+ case LogLevel.INFO:
+ set_foreground (ConsoleColor.BLUE);
+ break;
+ case LogLevel.NOTIFY:
+ set_foreground (ConsoleColor.MAGENTA);
+ break;
+ case LogLevel.WARN:
+ set_foreground (ConsoleColor.YELLOW);
+ break;
+ case LogLevel.ERROR:
+ set_foreground (ConsoleColor.RED);
+ break;
+ case LogLevel.FATAL:
+ set_background (ConsoleColor.RED);
+ set_foreground (ConsoleColor.WHITE);
+ break;
+ }
+ }
+
+ static void reset_color () {
+ stdout.printf ("\x001b[0m");
+ }
+
+ static void set_foreground (ConsoleColor color) {
+ set_color (color, true);
+ }
+
+ static void set_background (ConsoleColor color) {
+ set_color (color, false);
+ }
+
+ static void set_color (ConsoleColor color, bool isForeground) {
+
+ var color_code = color + 30 + 60;
+ if (!isForeground)
+ color_code += 10;
+ stdout.printf ("\x001b[%dm", color_code);
+ }
+
+ static void glib_log_func (string? d, LogLevelFlags flags, string msg) {
+ var domain = "";
+ if (d != null)
+ domain = "[%s] ".printf (d);
+
+ var message = msg.replace ("\n", "").replace ("\r", "");
+ message = "%s%s".printf (domain, message);
+
+ switch (flags) {
+ case LogLevelFlags.LEVEL_CRITICAL:
+ write (LogLevel.FATAL, format_message (message));
+ write (LogLevel.FATAL, format_message (AppName + " will not function properly."));
+ break;
+
+ case LogLevelFlags.LEVEL_ERROR:
+ write (LogLevel.ERROR, format_message (message));
+ break;
+
+ case LogLevelFlags.LEVEL_INFO:
+ case LogLevelFlags.LEVEL_MESSAGE:
+ write (LogLevel.INFO, format_message (message));
+ break;
+
+ case LogLevelFlags.LEVEL_DEBUG:
+ write (LogLevel.DEBUG, format_message (message));
+ break;
+
+ case LogLevelFlags.LEVEL_WARNING:
+ default:
+ write (LogLevel.WARN, format_message (message));
+ break;
+ }
+ }
+
+ }
+
}
Follow ups