From 8ef27f0bb32f36770d2fff0668009a1b9f092086 Mon Sep 17 00:00:00 2001 From: nzlov Date: Tue, 25 Jun 2019 23:52:34 +0800 Subject: [PATCH] add log replace color --- examples/log | Bin 0 -> 74520 bytes examples/log.v | 12 +++++++++ {colors => log}/colors.v | 54 +++++++++++++++++++-------------------- log/log.v | 51 ++++++++++++++++++++++++++++++++++++ 4 files changed, 90 insertions(+), 27 deletions(-) create mode 100755 examples/log create mode 100644 examples/log.v rename {colors => log}/colors.v (55%) create mode 100644 log/log.v diff --git a/examples/log b/examples/log new file mode 100755 index 0000000000000000000000000000000000000000..a6c87979594b6652a2a1c41b9c153644f2cea306 GIT binary patch literal 74520 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 b8QYS{%5bJ7x= ERROR{ + f := red('E') + println('[$f]$s') + } +} + +pub fn (l Log) w(s string){ + if l.level >= WARN{ + f := yellow('W') + println('[$f]$s') + } +} + +pub fn (l Log) i(s string){ + if l.level >= INFO{ + f := white('I') + println('[$f]$s') + } +} + +pub fn (l Log) d(s string){ + if l.level >= DEBUG{ + f := blue('D') + println('[$f]$s') + } +} \ No newline at end of file