aboutsummaryrefslogtreecommitdiff
path: root/examples/log
diff options
context:
space:
mode:
Diffstat (limited to 'examples/log')
-rw-r--r--examples/log/log.tm50
1 files changed, 50 insertions, 0 deletions
diff --git a/examples/log/log.tm b/examples/log/log.tm
new file mode 100644
index 00000000..42df072c
--- /dev/null
+++ b/examples/log/log.tm
@@ -0,0 +1,50 @@
+use <time.h>
+use <stdio.h>
+
+timestamp_format := CString("%F %T")
+
+logfiles := {:Path}
+
+func _timestamp()->Text:
+ c_str := inline C:CString {
+ char *str = GC_MALLOC_ATOMIC(20);
+ time_t t; time(&t);
+ struct tm *tm_info = localtime(&t);
+ strftime(str, 20, "%F %T", tm_info);
+ str
+ }
+ return c_str:as_text()
+
+func info(text:Text, newline=yes):
+ say("$\[2]⚫ $text$\[]", newline)
+ for file in logfiles:
+ file:append("$(_timestamp()) [info] $text$\n")
+
+func debug(text:Text, newline=yes):
+ say("$\[32]🟢 $text$\[]", newline)
+ for file in logfiles:
+ file:append("$(_timestamp()) [debug] $text$\n")
+
+func warn(text:Text, newline=yes):
+ say("$\[33;1]🟡 $text$\[]", newline)
+ for file in logfiles:
+ file:append("$(_timestamp()) [warn] $text$\n")
+
+func error(text:Text, newline=yes):
+ say("$\[31;1]🔴 $text$\[]", newline)
+ for file in logfiles:
+ file:append("$(_timestamp()) [error] $text$\n")
+
+func add_logfile(file:Path):
+ logfiles:add(file)
+
+func remove_logfile(file:Path):
+ logfiles:remove(file)
+
+func main():
+ add_logfile((./log.txt))
+ >> info("Hello")
+ >> debug("Hello")
+ >> warn("Hello")
+ >> error("Hello")
+