diff --git a/main.go b/main.go
index c615229..f597211 100644
--- a/main.go
+++ b/main.go
@@ -6,6 +6,7 @@ import (
 	"net"
 	"os"
 	"os/exec"
+	"path"
 	"path/filepath"
 	"strconv"
 	"syscall"
@@ -27,7 +28,11 @@ func main() {
 const pidFile = "acme-mana.pid"
 const socketFile = "acme-mana.sock"
 
+var stdout *os.File
+var stderr *os.File
+
 func start() {
+	initLog()
 	log.Println("Run Acme Mana...")
 	args := os.Args
 	if len(args) <= 1 {
@@ -49,6 +54,28 @@ func start() {
 	}
 }
 
+func initLog() {
+	pwd, err := os.Getwd()
+	if err != nil {
+		log.Fatalf("Failed to get current working directory: %v", err)
+	}
+	dir := path.Join(pwd, "log")
+	_, err = os.Stat(dir)
+	if os.IsNotExist(err) {
+		err := os.Mkdir(dir, 0777)
+		if err != nil {
+			log.Fatalf("Failed to create directory: %v", err)
+		}
+	}
+	outFile, err := os.OpenFile(path.Join(dir, "out.log"), os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0644)
+	defer outFile.Close()
+	stdout = outFile
+
+	errFile, err := os.OpenFile(path.Join(dir, "err.log"), os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0644)
+	defer stderr.Close()
+	stderr = errFile
+}
+
 func daemonStart() {
 	isDaemon := os.Getenv("GO_DAEMON")
 	log.Println("Run Daemon, DAEMON Is " + isDaemon)
@@ -64,13 +91,16 @@ func daemonStart() {
 			log.Fatalf("Failed to get executable path: %v", err)
 		}
 		cmd := exec.Cmd{
-			Path:        path,
-			Args:        os.Args,
-			Dir:         filepath.Dir(path),
-			Env:         append(os.Environ(), "GO_DAEMON=1"),
-			Stdin:       os.Stdin,
-			Stdout:      os.Stdout,
-			Stderr:      os.Stderr,
+			Path: path,
+			Args: os.Args,
+			Dir:  filepath.Dir(path),
+			Env:  append(os.Environ(), "GO_DAEMON=1"),
+			//Stdin:       os.Stdin,
+			Stdout: stdout,
+			Stderr: stderr,
+			//Stdin:       os.Stdin,
+			//Stdout:      os.Stdout,
+			//Stderr:      os.Stderr,
 			SysProcAttr: &syscall.SysProcAttr{},
 		}
 
@@ -190,10 +220,10 @@ func isRunning() bool {
 		log.Println("Failed to find process:", err)
 		return false
 	}
-
-	err = process.Signal(syscall.Signal(0))
-	log.Println("Signal result:", err)
-	return err == nil
+	return true
+	//err = process.Signal(syscall.Signal(0))
+	//log.Println("Signal result:", err)
+	//return err == nil
 }
 
 func readPID() (int, error) {