func ExecCmd(jobname, name string, arg ...string) (int, error) { cmd := exec.Command(name, arg...) stdout, err := cmd.StdoutPipe() if err != nil { log.Fatal(err) return 0, err } stderr, err := cmd.StderrPipe() if err != nil { log.Fatal(err) return 0, err } if err := cmd.Start(); err != nil { //log.Fatal(err) return 0, err } errscanner := bufio.NewScanner(stderr) for errscanner.Scan() { if len(errscanner.Text()) != 0 { log.Infof("<%s> %s", jobname, errscanner.Text()) } } if err := errscanner.Err(); err != nil { log.Fatalf("reading standard input: %v", err) } outscanner := bufio.NewScanner(stdout) for outscanner.Scan() { if len(outscanner.Text()) != 0 { log.Infof("<%s> %s", jobname, outscanner.Text()) } } if err := outscanner.Err(); err != nil { log.Fatalf("reading standard input: %v", err) } if err := cmd.Wait(); err != nil { if exiterr, ok := err.(*exec.ExitError); ok { // The program has exited with an exit code != 0 // This works on both Unix and Windows. Although package // syscall is generally platform dependent, WaitStatus is // defined for both Unix and Windows and in both cases has // an ExitStatus() method with the same signature. status, ok := exiterr.Sys().(syscall.WaitStatus) if !ok { return 0, fmt.Errorf("get exit status fail") } return status.ExitStatus(), nil } else { log.Fatalf("cmd.Wait: %v", err) return 0, err } } return 0, err }
func TestAll(t *testing.T) { l := log.New(os.Stdout, "test_logger ", log.LOG_LEVEL_ALL) l.Debug("debug") l.Debugf("%s", "debug") l.Trace("trace") l.Tracef("%s", "trace") l.Info("info") l.Infof("%s", "info") l.Warn("warn") l.Warnf("%s", "warn") l.Error("error") l.Errorf("%s", "error") l.Fatal("fatal") l.Fatalf("%s", "fatal") log.Debug("debug") log.Debugf("%s", "debug") log.Trace("trace") log.Tracef("%s", "trace") log.Info("info") log.Infof("%s", "info") log.Warn("warn") log.Warnf("%s", "warn") log.Error("error") log.Errorf("%s", "error") log.Fatal("fatal") log.Fatalf("%s", "fatal") }
func (this *Builtins) SetBizdate(d string) error { bizdate, err := time.Parse(d, "YYYYMMDD") if err != nil { log.Fatalf("invalid bizdate: %s", config.Bizdate) return err } this.builtins["gmtdate"] = ast.NewDate(bizdate.AddDate(0, 0, 1), "YYYYMMDD") this.builtins["bizdate"] = ast.NewDate(bizdate, "YYYYMMDD") return nil }