1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00
v/vlib/log/log.v

105 lines
1.9 KiB
V
Raw Normal View History

2019-06-26 03:14:38 +03:00
module log
2019-07-24 18:50:29 +03:00
import os
import time
2019-07-01 18:09:22 +03:00
import term
2019-06-26 03:14:38 +03:00
2019-10-28 18:53:02 +03:00
pub const (
2019-06-26 03:14:38 +03:00
FATAL = 1
ERROR = 2
WARN = 3
INFO = 4
DEBUG = 5
2019-06-26 03:14:38 +03:00
)
interface Logger {
fatal(s string)
error(s string)
warn(s string)
info(s string)
debug(s string)
}
2019-10-28 18:53:02 +03:00
pub struct Log {
2019-06-26 03:14:38 +03:00
mut:
level int
2019-07-24 18:50:29 +03:00
output string
2019-06-26 03:14:38 +03:00
}
pub fn (l mut Log) set_level(level int){
l.level = level
}
2019-07-24 18:50:29 +03:00
pub fn (l mut Log) set_output(output string) {
l.output = output
}
fn (l Log) log_file(s string, e string) {
filename := l.output
f := os.open_append(l.output) or {
panic('error reading file $filename')
}
timestamp := time.now().format_ss()
f.writeln('$timestamp [$e] $s')
}
2019-06-26 03:14:38 +03:00
pub fn (l Log) fatal(s string){
panic(s)
}
pub fn (l Log) error(s string){
if l.level >= ERROR{
2019-10-27 09:45:03 +03:00
match l.output {
'terminal'{
f := term.red('E')
t := time.now()
println('[$f ${t.format_ss()}] $s')
} else {
l.log_file(s, 'E')
}
2019-07-24 18:50:29 +03:00
}
2019-06-26 03:14:38 +03:00
}
}
pub fn (l Log) warn(s string){
if l.level >= WARN{
2019-10-27 09:45:03 +03:00
match l.output {
'terminal'{
f := term.yellow('W')
t := time.now()
println('[$f ${t.format_ss()}] $s')
} else {
l.log_file(s, 'W')
}
2019-07-24 18:50:29 +03:00
}
2019-10-27 09:45:03 +03:00
}
2019-06-26 03:14:38 +03:00
}
pub fn (l Log) info(s string){
if l.level >= INFO{
2019-10-27 09:45:03 +03:00
match l.output {
'terminal'{
f := term.white('I')
t := time.now()
println('[$f ${t.format_ss()}] $s')
} else {
l.log_file(s, 'I')
}
2019-07-24 18:50:29 +03:00
}
2019-06-26 03:14:38 +03:00
}
}
pub fn (l Log) debug(s string){
if l.level >= DEBUG{
2019-10-27 09:45:03 +03:00
match l.output {
'terminal' {
f := term.blue('D')
t := time.now()
println('[$f ${t.format_ss()}] $s')
} else {
l.log_file(s, 'D')
}
2019-07-24 18:50:29 +03:00
}
2019-06-26 03:14:38 +03:00
}
2019-07-16 18:59:07 +03:00
}