1
public class Log : Object{
27
public static void log_handler (string? domain, LogLevelFlags lvl, string message) {
32
var output = preprocess(message);
36
stdout.printf(output);
41
private static string preprocess(string message) {
43
string[] strings = message.split(":");
44
if(strings[0].length > 5)
46
if(strings[0].has_suffix(".vala"))
48
output = strings[2:strings.length];
49
if(output[0].has_prefix(" "))
50
output[0] = output[0].strip();
57
return string.joinv(":",output);
60
private static string get_color_code(Color color, bool foreground){
67
case Color.Black: color_id = 0; break;
68
case Color.DarkRed: color_id = 1; break;
69
case Color.DarkGreen: color_id = 2; break;
70
case Color.DarkYellow: color_id = 3; break;
71
case Color.DarkBlue: color_id = 4; break;
72
case Color.DarkMagenta: color_id = 5; break;
73
case Color.DarkCyan: color_id = 6; break;
74
case Color.Gray: color_id = 7; break;
77
case Color.DarkGray: color_id = 0; light = true; break;
78
case Color.Red: color_id = 1; light = true; break;
79
case Color.Green: color_id = 2; light = true; break;
80
case Color.Yellow: color_id = 3; light = true; break;
81
case Color.Blue: color_id = 4; light = true; break;
82
case Color.Magenta: color_id = 5; light = true; break;
83
case Color.Cyan: color_id = 6; light = true; break;
84
case Color.White: color_id = 7; light = true; break;
87
case Color.Reset: reset = true; break;
93
int code = color_id + (foreground ? 30 : 40) + (light ? 60 : 0);
94
return "\x001b["+code.to_string()+"m";
97
private static void color(Color? foreground, Color? background = null){
98
if(foreground != null)
99
stdout.printf(get_color_code(foreground, true));
101
if(background != null)
102
stdout.printf(get_color_code(background, false));
105
private static void reset(){
106
stdout.printf(get_color_code(Color.Reset, true));
109
protected static void prelude(string? domain, LogLevelFlags level){
110
stdout.printf ("[%15.15s]", domain);
115
case LogLevelFlags.FLAG_RECURSION:
116
color(Color.Red, Color.White);
119
case LogLevelFlags.FLAG_FATAL:
120
color(Color.Red, Color.White);
123
case LogLevelFlags.LEVEL_CRITICAL:
124
color(Color.Red, Color.White);
127
case LogLevelFlags.LEVEL_ERROR:
131
case LogLevelFlags.LEVEL_WARNING:
135
case LogLevelFlags.LEVEL_MESSAGE:
136
color(Color.DarkMagenta);
139
case LogLevelFlags.LEVEL_INFO:
143
case LogLevelFlags.LEVEL_DEBUG:
147
case LogLevelFlags.LEVEL_MASK:
152
color(Color.Black, Color.DarkYellow);
157
stdout.printf ("[%9s]", name);
163
private static bool should_log(LogLevelFlags request_level){
164
// switch (request_level) {
171
// case Level.NOTIFY:
177
// case Level.UNDEFINED:
183
return true;//request_level <= level;