Skip to content

Commit

Permalink
process log pipe fixed but need to kill extra loggers
Browse files Browse the repository at this point in the history
  • Loading branch information
nbari committed Aug 27, 2016
1 parent 3b0b22b commit ebac79b
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 13 deletions.
2 changes: 0 additions & 2 deletions daemon.go
Expand Up @@ -59,8 +59,6 @@ func (d *Daemon) Run(p Process) (*process, error) {
}

return process, nil
// control process loop
//go d.control(process)
}

// WritePid write pid to file
Expand Down
14 changes: 14 additions & 0 deletions daemon_test.go
@@ -1,6 +1,7 @@
package immortal

import (
"fmt"
"io/ioutil"
"os"
"os/signal"
Expand Down Expand Up @@ -113,6 +114,15 @@ func TestHelperProcessSignalsUDOT(*testing.T) {
os.Exit(1)
case <-time.After(10 * time.Second):
os.Exit(0)
default:
for i := 1; i < 10; i++ {
if i%3 == 0 {
fmt.Fprintf(os.Stderr, "STDERR i: %d\n", i)
} else {
fmt.Printf("STDOUT i: %d\n", i)
}
time.Sleep(time.Second)
}
}
}

Expand All @@ -136,6 +146,10 @@ func TestSignalsUDOT(t *testing.T) {
Parent: filepath.Join(parentDir, "parent.pid"),
Child: filepath.Join(parentDir, "child.pid"),
},
//Log: Log{
//File: "/tmp/test.log",
//},
Logger: "logger -t test",
}
d, err := New(cfg)
if err != nil {
Expand Down
13 changes: 7 additions & 6 deletions logger.go
Expand Up @@ -2,13 +2,14 @@ package immortal

import (
"bufio"
"github.com/immortal/logrotate"
"github.com/immortal/multiwriter"
"io"
"log"
"os/exec"
"strings"
"time"

"github.com/immortal/logrotate"
"github.com/immortal/multiwriter"
)

type Logger interface {
Expand Down Expand Up @@ -84,14 +85,14 @@ func NewLogger(cfg *Config) *log.Logger {
return nil
}

func (self *LogWriter) StdHandler(input io.ReadCloser) {
func (l *LogWriter) StdHandler(input io.ReadCloser) {
in := bufio.NewScanner(input)
for in.Scan() {
self.logger.Print(in.Text())
l.logger.Print(in.Text())
}
input.Close()
}

func (self *LogWriter) IsLogging() bool {
return self.logger != nil
func (l *LogWriter) IsLogging() bool {
return l.logger != nil
}
10 changes: 5 additions & 5 deletions process.go
Expand Up @@ -76,9 +76,6 @@ func (p *process) Start() (*process, error) {
w *io.PipeWriter
)
if p.Logger.IsLogging() {
defer func() {
w.Close()
}()
r, w = io.Pipe()
p.cmd.Stdout = w
p.cmd.Stderr = w
Expand All @@ -96,11 +93,14 @@ func (p *process) Start() (*process, error) {
p.sTime = time.Now()

p.errch = make(chan error)
go func() {
go func(w *io.PipeWriter) {
err := p.cmd.Wait()
p.eTime = time.Now()
if w != nil {
w.Close()
}
p.errch <- err
}()
}(w)
return p, nil
}

Expand Down

0 comments on commit ebac79b

Please sign in to comment.