package log
import (
+ "fmt"
+ "io/ioutil"
+ "os"
"path/filepath"
+ "strings"
"sync"
"time"
var defaultFormatter = &logrus.TextFormatter{DisableColors: true}
-func InitLogFile(config *config.Config) {
- hook := newBtmHook(config.LogDir())
+func InitLogFile(config *config.Config) error {
+ logPath := config.LogDir()
+ if err := clearLockFiles(logPath); err != nil {
+ return err
+ }
+
+ hook := newBtmHook(logPath)
logrus.AddHook(hook)
+ logrus.SetOutput(ioutil.Discard) //控制台不输出
+ fmt.Printf("all logs are output in the %s directory\n", logPath)
+ return nil
}
type BtmHook struct {
return err
}
- _, err = writer.Write(msg)
- return err
+ if _, err = writer.Write(msg); err != nil {
+ return err
+ }
+
+ return writer.Close()
+}
+
+func clearLockFiles(logPath string) error {
+ files, err := ioutil.ReadDir(logPath)
+ if os.IsNotExist(err) {
+ return nil
+ } else if err != nil {
+ return err
+ }
+
+ for _, file := range files {
+ if ok := strings.HasSuffix(file.Name(), "_lock"); ok {
+ if err := os.Remove(filepath.Join(logPath, file.Name())); err != nil {
+ return err
+ }
+ }
+ }
+ return nil
}
func (hook *BtmHook) Fire(entry *logrus.Entry) error {