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