diff options
author | Ryo Nihei <nihei.dev@gmail.com> | 2021-02-16 23:25:44 +0900 |
---|---|---|
committer | Ryo Nihei <nihei.dev@gmail.com> | 2021-02-16 23:43:51 +0900 |
commit | 8dd5eb69380a19a9df7534c1660d1a1ba2091c83 (patch) | |
tree | b2f7ea742734ea4f6c7da8ab69ad41ef5b95b429 /log/logger.go | |
parent | Add CLI (diff) | |
download | tre-8dd5eb69380a19a9df7534c1660d1a1ba2091c83.tar.gz tre-8dd5eb69380a19a9df7534c1660d1a1ba2091c83.tar.xz |
Add logging to lex command
lex command writes logs out to the maleeni-lex.log file.
When you generate a lexer using driver.NewLexer(), you can choose whether the lexer writes logs or not.
Diffstat (limited to 'log/logger.go')
-rw-r--r-- | log/logger.go | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/log/logger.go b/log/logger.go new file mode 100644 index 0000000..770f1c1 --- /dev/null +++ b/log/logger.go @@ -0,0 +1,42 @@ +package log + +import ( + "fmt" + "io" +) + +type Logger interface { + Log(format string, a ...interface{}) +} + +var ( + _ Logger = &logger{} + _ Logger = &nopLogger{} +) + +type logger struct { + w io.Writer +} + +func NewLogger(w io.Writer) (*logger, error) { + if w == nil { + return nil, fmt.Errorf("w is nil; NewLogger() needs a writer") + } + return &logger{ + w: w, + }, nil +} + +func (l *logger) Log(format string, a ...interface{}) { + fmt.Fprintf(l.w, format+"\n", a...) +} + +type nopLogger struct { +} + +func NewNopLogger() *nopLogger { + return &nopLogger{} +} + +func (l *nopLogger) Log(format string, a ...interface{}) { +} |