提交 c2877b20 作者: Brian Tiger Chow

refactor(init, repo): init logs in fsrepo

上级 c5da1561
...@@ -4,9 +4,7 @@ import ( ...@@ -4,9 +4,7 @@ import (
"bytes" "bytes"
"encoding/base64" "encoding/base64"
"fmt" "fmt"
"os"
"path" "path"
"path/filepath"
context "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context" context "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context"
cmds "github.com/jbenet/go-ipfs/commands" cmds "github.com/jbenet/go-ipfs/commands"
...@@ -18,7 +16,7 @@ import ( ...@@ -18,7 +16,7 @@ import (
peer "github.com/jbenet/go-ipfs/p2p/peer" peer "github.com/jbenet/go-ipfs/p2p/peer"
repo "github.com/jbenet/go-ipfs/repo" repo "github.com/jbenet/go-ipfs/repo"
config "github.com/jbenet/go-ipfs/repo/config" config "github.com/jbenet/go-ipfs/repo/config"
"github.com/jbenet/go-ipfs/repo/fsrepo" fsrepo "github.com/jbenet/go-ipfs/repo/fsrepo"
u "github.com/jbenet/go-ipfs/util" u "github.com/jbenet/go-ipfs/util"
debugerror "github.com/jbenet/go-ipfs/util/debugerror" debugerror "github.com/jbenet/go-ipfs/util/debugerror"
) )
...@@ -98,17 +96,19 @@ func doInit(configRoot string, force bool, nBitsForKeypair int) (interface{}, er ...@@ -98,17 +96,19 @@ func doInit(configRoot string, force bool, nBitsForKeypair int) (interface{}, er
return nil, err return nil, err
} }
repo := fsrepo.At(configRoot) r := fsrepo.At(configRoot)
if err := repo.Open(); err != nil { if err := r.Open(); err != nil {
return nil, err return nil, err
} }
if err := repo.SetConfig(conf); err != nil { if err := r.SetConfig(conf); err != nil {
return nil, err return nil, err
} }
if err := repo.Close(); err != nil { if err := r.Close(); err != nil {
return nil, err
}
if err := repo.ConfigureEventLogger(conf.Logs); err != nil {
return nil, err return nil, err
} }
err = addTheWelcomeFile(conf) err = addTheWelcomeFile(conf)
if err != nil { if err != nil {
return nil, err return nil, err
...@@ -167,7 +167,7 @@ func initConfig(nBitsForKeypair int) (*config.Config, error) { ...@@ -167,7 +167,7 @@ func initConfig(nBitsForKeypair int) (*config.Config, error) {
return nil, err return nil, err
} }
logConfig, err := initLogs("") // TODO allow user to override dir logConfig, err := initLogs()
if err != nil { if err != nil {
return nil, err return nil, err
} }
...@@ -191,7 +191,7 @@ func initConfig(nBitsForKeypair int) (*config.Config, error) { ...@@ -191,7 +191,7 @@ func initConfig(nBitsForKeypair int) (*config.Config, error) {
Bootstrap: bootstrapPeers, Bootstrap: bootstrapPeers,
Datastore: *ds, Datastore: *ds,
Logs: logConfig, Logs: *logConfig,
Identity: identity, Identity: identity,
// setup the node mount points. // setup the node mount points.
...@@ -240,42 +240,14 @@ func identityConfig(nbits int) (config.Identity, error) { ...@@ -240,42 +240,14 @@ func identityConfig(nbits int) (config.Identity, error) {
return ident, nil return ident, nil
} }
// initLogs initializes the event logger at the specified path. It uses the // initLogs initializes the event logger.
// default log path if no path is provided. func initLogs() (*config.Logs, error) {
func initLogs(logpath string) (config.Logs, error) { logpath, err := config.LogsPath("")
if len(logpath) == 0 {
var err error
logpath, err = config.LogsPath("")
if err != nil {
return config.Logs{}, debugerror.Wrap(err)
}
}
err := initCheckDir(logpath)
if err != nil { if err != nil {
return config.Logs{}, debugerror.Errorf("logs: %s", err) return nil, err
} }
conf := config.Logs{ conf := config.Logs{
Filename: path.Join(logpath, "events.log"), Filename: path.Join(logpath, "events.log"),
} }
err = repo.ConfigureEventLogger(conf) return &conf, nil
if err != nil {
return conf, err
}
return conf, nil
}
// initCheckDir ensures the directory exists and is writable
func initCheckDir(path string) error {
// Construct the path if missing
if err := os.MkdirAll(path, os.ModePerm); err != nil {
return err
}
// Check the directory is writeable
if f, err := os.Create(filepath.Join(path, "._check_writeable")); err == nil {
os.Remove(f.Name())
} else {
return debugerror.New("'" + path + "' is not writeable")
}
return nil
} }
...@@ -38,6 +38,14 @@ func (r *FSRepo) Open() error { ...@@ -38,6 +38,14 @@ func (r *FSRepo) Open() error {
return debugerror.Errorf("datastore: %s", err) return debugerror.Errorf("datastore: %s", err)
} }
logpath, err := config.LogsPath("")
if err != nil {
return debugerror.Wrap(err)
}
if err := initCheckDir(logpath); err != nil {
return debugerror.Errorf("logs: %s", err)
}
return nil return nil
} }
......
...@@ -7,22 +7,18 @@ import ( ...@@ -7,22 +7,18 @@ import (
) )
func ConfigureEventLogger(config config.Logs) error { func ConfigureEventLogger(config config.Logs) error {
if util.Debug { if util.Debug {
eventlog.Configure(eventlog.LevelDebug) eventlog.Configure(eventlog.LevelDebug)
} else { } else {
eventlog.Configure(eventlog.LevelInfo) eventlog.Configure(eventlog.LevelInfo)
} }
eventlog.Configure(eventlog.LdJSONFormatter) eventlog.Configure(eventlog.LdJSONFormatter)
rotateConf := eventlog.LogRotatorConfig{ rotateConf := eventlog.LogRotatorConfig{
Filename: config.Filename, Filename: config.Filename,
MaxSizeMB: config.MaxSizeMB, MaxSizeMB: config.MaxSizeMB,
MaxBackups: config.MaxBackups, MaxBackups: config.MaxBackups,
MaxAgeDays: config.MaxAgeDays, MaxAgeDays: config.MaxAgeDays,
} }
eventlog.Configure(eventlog.OutputRotatingLogFile(rotateConf)) eventlog.Configure(eventlog.OutputRotatingLogFile(rotateConf))
return nil return nil
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论