summaryrefslogtreecommitdiffstats
path: root/log.vala
blob: a4f9842d073b044be47f8f938da669ac4e8a23b0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
namespace Log {
	private unowned FileStream file;
	private FileStream fileowner;

	public void init() {
		set_file(cfg.get_string("config", "logfile"));
		GLib.Log.set_default_handler(log_handler);
	}

	private void log_handler(string? domain, LogLevelFlags flags, string message) {
		TimeVal time = {0};
		time.get_current_time();
		string s = "%.10ld | %15s | %s\n".printf(time.tv_usec, domain, message);

		if(file != null) {
			file.printf(s);
			file.flush();
		}
	}

	public bool set_file(string filename) {
		switch(filename) {
			case "stdout":
				file = stdout;
				break;
			case "stderr":
				file = stderr;
				break;
			default:
				fileowner = FileStream.open(filename, "a");
				file = fileowner;
				break;
		}

		if(file == null)
			return false;
		return true;
	}
}