summaryrefslogtreecommitdiffstats
path: root/log.vala
diff options
context:
space:
mode:
authorSebastian Reichel <sre@ring0.de>2012-07-22 11:07:44 +0200
committerSebastian Reichel <sre@ring0.de>2012-07-22 11:07:44 +0200
commit77e9488cbb0c4c7dbb55470ec4cf2bbbe35a5d8d (patch)
treef620aeabccb06d9a3c47237601667fd792e41e99 /log.vala
parentfa137fe02919114b969be65ef7d9a359e65545bf (diff)
downloadmicrocopterd-77e9488cbb0c4c7dbb55470ec4cf2bbbe35a5d8d.tar.bz2
support logging into file
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;
+ }
+}