循环利用openfile以os.O_APPEND打开预定义名称的文件,然后把返回的*os.file赋给了另外一个对象,并且接着对此对象进行数据写操作,但是这个写操作是在循环外面。现在有个问题,关闭是在循环内才生效的,那么写操作无法完成;如果不关闭,可以正常进行写操作,这样会产生什么后果?谢谢!go小白,希望大神帮忙解释下!
站长大大帮忙看下吧!
```
if l.file[s] == nil {
for c := s; c >= debugLog; c-- {
name, _ := logName(severityName[c], time.Now())
f, err := os.OpenFile(name, os.O_APPEND, 0666)
//fmt.Println("f:", f)
if err != nil && os.IsNotExist(err) {
err := l.createFiles(c)
if err != nil {
os.Stderr.Write(data) // Make sure the message appears somewhere.
l.exit(err)
}
} else {
sb := &syncBuffer{
logger: l,
sev: c,
}
f.Close()
sb.file = f
sb.Writer = bufio.NewWriterSize(sb.file, bufferSize)
l.file[c] = sb
//fmt.Println("l.file[c]:", l.file[c])
}
//f.Close()
}
}
switch s {
case fatalLog:
l.file[fatalLog].Write(data)
fallthrough
case errorLog:
l.file[errorLog].Write(data)
fallthrough
case warningLog:
l.file[warningLog].Write(data)
fallthrough
case infoLog:
l.file[infoLog].Write(data)
fallthrough
case debugLog:
l.file[debugLog].Write(data)
}
```
#2
更多评论