writer.go
func (f *FileLogger) Println(v ...interface{}) {
	_, file, line, _ := runtime.Caller(1) //calldepth=2
	f.logChan <- fmt.Sprintf("[%v:%v]", shortFileName(file), line) + fmt.Sprintln(v...)
}
func (f *FileLogger) Println(v ...interface{}) {
	_, file, line, _ := runtime.Caller(1) //calldepth=2
	f.logChan <- fmt.Sprintf("[%v:%v]", shortFileName(file), line) + fmt.Sprintln(v...)
}
func ( f * FileLogger ) Println ( v ... interface { } ) { _ , file , line , _ := runtime . Caller ( 1 ) //calldepth=2 f . logChan <- fmt . Sprintf ( " " , shortFileName ( file ) , line ) + fmt . Sprintln ( v ... ) }
// Println throw logstr to channel to print to the logger.
// Arguments are handled in the manner of fmt.Println.
Println throw logstr to channel to print to the logger . Arguments are handled in the manner of fmt . Println .