summaryrefslogtreecommitdiffstats
path: root/log.vala
diff options
context:
space:
mode:
Diffstat (limited to 'log.vala')
-rw-r--r--log.vala39
1 files changed, 39 insertions, 0 deletions
diff --git a/log.vala b/log.vala
new file mode 100644
index 0000000..a4f9842
--- /dev/null
+++ b/log.vala
@@ -0,0 +1,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;
+ }
+}