OSDN Git Service

add clear lock file (#364)
[bytom/vapor.git] / log / log.go
index 43bcc9c..ebd979f 100644 (file)
@@ -1,7 +1,11 @@
 package log
 
 import (
+       "fmt"
+       "io/ioutil"
+       "os"
        "path/filepath"
+       "strings"
        "sync"
        "time"
 
@@ -18,9 +22,17 @@ const (
 
 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 {
@@ -60,6 +72,22 @@ func (hook *BtmHook) ioWrite(entry *logrus.Entry) error {
        return err
 }
 
+func clearLockFiles(logPath string) error {
+       files, err := ioutil.ReadDir(logPath)
+       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 {
        hook.lock.Lock()
        defer hook.lock.Unlock()