Skip to content

Commit ea52f45

Browse files
committed
add logging
1 parent 65969a0 commit ea52f45

File tree

2 files changed

+52
-0
lines changed

2 files changed

+52
-0
lines changed

log.go

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package shell
2+
3+
import (
4+
"encoding/json"
5+
"fmt"
6+
"io"
7+
"net/http"
8+
)
9+
10+
// Logger is used to handle incoming logs from the ipfs node
11+
type Logger struct {
12+
r io.ReadCloser
13+
}
14+
15+
// Next is used to retrieve the next event from the logging system
16+
func (l Logger) Next() (map[string]interface{}, error) {
17+
var out map[string]interface{}
18+
if err := json.NewDecoder(l.r).Decode(&out); err != nil {
19+
return nil, err
20+
}
21+
return out, nil
22+
}
23+
24+
// GetLogs is used to retrieve a parsable logger object
25+
func (s *Shell) GetLogs() (Logger, error) {
26+
logURL := fmt.Sprintf("http://%s/api/v0/log/tail", s.url)
27+
req, err := http.NewRequest("GET", logURL, nil)
28+
if err != nil {
29+
return Logger{}, err
30+
}
31+
hc := &http.Client{}
32+
resp, err := hc.Do(req)
33+
if err != nil {
34+
return Logger{}, err
35+
}
36+
return Logger{resp.Body}, nil
37+
}

log_test.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package shell
2+
3+
import "testing"
4+
5+
func Test_Logger(t *testing.T) {
6+
sh := NewLocalShell()
7+
logger, err := sh.GetLogs()
8+
if err != nil {
9+
t.Fatal(err)
10+
}
11+
_, err = logger.Next()
12+
if err != nil {
13+
t.Fatal(err)
14+
}
15+
}

0 commit comments

Comments
 (0)