Aller/Golang écriture du journal de fichier

Je suis en train d'écrire dans un fichier journal avec Golang.

J'ai essayé plusieurs approches, qui ont toutes échoué. C'est ce que j'ai essayé:

func TestLogging(t *testing.T) {
    if !FileExists("logfile") {
        CreateFile("logfile")
    }
    f, err := os.Open("logfile")
    if err != nil {
        t.Fatalf("error: %v", err)
    }

    //attempt #1
    log.SetOutput(io.MultiWriter(os.Stderr, f))
    log.Println("hello, logfile")

    //attempt #2
    log.SetOutput(io.Writer(f))
    log.Println("hello, logfile")

    //attempt #3
    log.SetOutput(f)
    log.Println("hello, logfile")
}

func FileExists(name string) bool {
    if _, err := os.Stat(name); err != nil {
       if os.IsNotExist(err) {
            return false
        }
    }
    return true
}

func CreateFile(name string) error {
    fo, err := os.Create(name)
    if err != nil {
        return err
    }
    defer func() {
        fo.Close()
    }()
    return nil
}

Le fichier journal est créé, mais rien n'est jamais imprimé ou ajouté à la fin. Pourquoi?

  • Si vous déployez votre programme sous Linux, vous pouvez simplement écrire votre journal à std sortie de rediriger la sortie vers un fichier comme ceci: ./programme 2>,&1 | tee logs.txt. Il doit y avoir une autre façon dans un autre système.
InformationsquelleAutor Allison A | 2013-11-13