From 8dd5eb69380a19a9df7534c1660d1a1ba2091c83 Mon Sep 17 00:00:00 2001 From: Ryo Nihei Date: Tue, 16 Feb 2021 23:25:44 +0900 Subject: 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. --- log/logger.go | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 log/logger.go (limited to 'log/logger.go') 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{}) { +} -- cgit v1.2.3