diff options
author | =Corey Hulen <corey@hulen.com> | 2016-01-11 09:13:38 -0600 |
---|---|---|
committer | =Corey Hulen <corey@hulen.com> | 2016-01-11 09:13:38 -0600 |
commit | 30bb530903352039c1b5055a756b7e246e2406b6 (patch) | |
tree | fddb6a34fbb67a8748c88ace8d316a6dcac9109a /Godeps/_workspace/src/github.com/alecthomas/log4go/termlog.go | |
parent | b1251b93932adf616a996725448d0b77fad0d3c1 (diff) | |
download | chat-30bb530903352039c1b5055a756b7e246e2406b6.tar.gz chat-30bb530903352039c1b5055a756b7e246e2406b6.tar.bz2 chat-30bb530903352039c1b5055a756b7e246e2406b6.zip |
Upgrading logging package
Diffstat (limited to 'Godeps/_workspace/src/github.com/alecthomas/log4go/termlog.go')
-rw-r--r-- | Godeps/_workspace/src/github.com/alecthomas/log4go/termlog.go | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/Godeps/_workspace/src/github.com/alecthomas/log4go/termlog.go b/Godeps/_workspace/src/github.com/alecthomas/log4go/termlog.go new file mode 100644 index 000000000..8a941e269 --- /dev/null +++ b/Godeps/_workspace/src/github.com/alecthomas/log4go/termlog.go @@ -0,0 +1,49 @@ +// Copyright (C) 2010, Kyle Lemons <kyle@kylelemons.net>. All rights reserved. + +package log4go + +import ( + "fmt" + "io" + "os" + "time" +) + +var stdout io.Writer = os.Stdout + +// This is the standard writer that prints to standard output. +type ConsoleLogWriter struct { + format string + w chan *LogRecord +} + +// This creates a new ConsoleLogWriter +func NewConsoleLogWriter() *ConsoleLogWriter { + consoleWriter := &ConsoleLogWriter{ + format: "[%T %D] [%L] (%S) %M", + w: make(chan *LogRecord, LogBufferLength), + } + go consoleWriter.run(stdout) + return consoleWriter +} +func (c *ConsoleLogWriter) SetFormat(format string) { + c.format = format +} +func (c *ConsoleLogWriter) run(out io.Writer) { + for rec := range c.w { + fmt.Fprint(out, FormatLogRecord(c.format, rec)) + } +} + +// This is the ConsoleLogWriter's output method. This will block if the output +// buffer is full. +func (c *ConsoleLogWriter) LogWrite(rec *LogRecord) { + c.w <- rec +} + +// Close stops the logger from sending messages to standard output. Attempts to +// send log messages to this logger after a Close have undefined behavior. +func (c *ConsoleLogWriter) Close() { + close(c.w) + time.Sleep(50 * time.Millisecond) // Try to give console I/O time to complete +} |