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