func NewRotatingFileHandler(fileName string, maxBytes int, backupCount int) (*RotatingFileHandler, error) {
	dir := path.Dir(fileName)
	os.MkdirAll(dir, 0777)

	h := new(RotatingFileHandler)

	if maxBytes <= 0 {
		return nil, fmt.Errorf("invalid max bytes")
	}

	h.fileName = fileName
	h.maxBytes = maxBytes
	h.backupCount = backupCount

	var err error
	h.fd, err = os.OpenFile(fileName, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
	if err != nil {
		return nil, err
	}

	f, err := h.fd.Stat()
	if err != nil {
		return nil, err
	}
	h.curBytes = int(f.Size())

	return h, nil
}
func NewRotatingFileHandler(fileName string, maxBytes int, backupCount int) (*RotatingFileHandler, error) {
	dir := path.Dir(fileName)
	os.MkdirAll(dir, 0777)

	h := new(RotatingFileHandler)

	if maxBytes <= 0 {
		return nil, fmt.Errorf("invalid max bytes")
	}

	h.fileName = fileName
	h.maxBytes = maxBytes
	h.backupCount = backupCount

	var err error
	h.fd, err = os.OpenFile(fileName, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
	if err != nil {
		return nil, err
	}

	f, err := h.fd.Stat()
	if err != nil {
		return nil, err
	}
	h.curBytes = int(f.Size())

	return h, nil
}
func NewRotatingFileHandler ( fileName string , maxBytes int , backupCount int ) ( * RotatingFileHandler , error ) { dir := path . Dir ( fileName ) os . MkdirAll ( dir , 0777 ) h := new ( RotatingFileHandler ) if maxBytes <= 0 { return nil , fmt . Errorf ( " " ) } h . fileName = fileName h . maxBytes = maxBytes h . backupCount = backupCount var err error h . fd , err = os . OpenFile ( fileName , os . O_CREATE | os . O_WRONLY | os . O_APPEND , 0666 ) if err != nil { return nil , err } f , err := h . fd . Stat ( ) if err != nil { return nil , err } h . curBytes = int ( f . Size ( ) ) return h , nil }
// NewRotatingFileHandler creates a RotatingFileHandler
NewRotatingFileHandler creates a RotatingFileHandler