fix dead loop
This commit is contained in:
parent
20e440f79d
commit
6d89afc6e3
|
@ -15,6 +15,11 @@ const (
|
|||
type ConsoleAppender struct {
|
||||
}
|
||||
|
||||
// Close implements LoggerAppender.
|
||||
func (c *ConsoleAppender) Close() {
|
||||
|
||||
}
|
||||
|
||||
func (c *ConsoleAppender) GetName() string {
|
||||
return "console"
|
||||
}
|
||||
|
|
19
file.go
19
file.go
|
@ -9,6 +9,13 @@ type FileAppender struct {
|
|||
filePath string
|
||||
lchan chan LogEvent
|
||||
file *os.File
|
||||
stopChan chan struct{}
|
||||
}
|
||||
|
||||
// Close implements LoggerAppender.
|
||||
func (f *FileAppender) Close() {
|
||||
//send stop signal
|
||||
f.stopChan <- struct{}{}
|
||||
}
|
||||
|
||||
func (f *FileAppender) GetName() string {
|
||||
|
@ -17,6 +24,7 @@ func (f *FileAppender) GetName() string {
|
|||
|
||||
func (f *FileAppender) start() {
|
||||
f.lchan = make(chan LogEvent, 10)
|
||||
f.stopChan = make(chan struct{})
|
||||
if f.file == nil || int(f.file.Fd()) == -1 {
|
||||
dirName := filepath.Dir(f.filePath)
|
||||
_, err := os.Stat(dirName)
|
||||
|
@ -29,9 +37,14 @@ func (f *FileAppender) start() {
|
|||
go func() {
|
||||
defer f.file.Close()
|
||||
for {
|
||||
logEvent := <-f.lchan
|
||||
logMsg := format(logEvent)
|
||||
f.file.WriteString(logMsg)
|
||||
select {
|
||||
case <-f.stopChan:
|
||||
return
|
||||
case logEvent := <-f.lchan:
|
||||
logMsg := format(logEvent)
|
||||
f.file.WriteString(logMsg)
|
||||
}
|
||||
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue