Improved logging fields and std redirection.
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2023-05-25 17:38:41 +02:00
parent bb7da9ab6d
commit a5ee20e337

41
main.go
View File

@@ -46,7 +46,7 @@ type ofsDriver struct {
var version = "1.0"
func (d ofsDriver) Create(r *volume.CreateRequest) error {
log.Info("Create ObjectiveFS Volume '%s'", r.Name)
log.WithFields(log.Fields{"name": r.Name}).Info("Create ObjectiveFS Volume")
d.Lock()
defer d.Unlock()
@@ -97,7 +97,7 @@ func (d ofsDriver) Get(r *volume.GetRequest) (*volume.GetResponse, error) {
}
func umount(v *ofsVolume) error {
log.Info("Unmount ObjectiveFS Volume '%s'", v.volume.Name)
log.WithFields(log.Fields{"name": v.volume.Name}).Info("Unmount ObjectiveFS Volume")
if !v.mounted {
return nil
}
@@ -148,16 +148,19 @@ func (d ofsDriver) Mount(r *volume.MountRequest) (*volume.MountResponse, error)
if !ok {
return &volume.MountResponse{}, fmt.Errorf("volume '%s' not found", r.Name)
}
log.Info("Attach ObjectiveFS Volume '%s' to '%s'", r.Name, r.ID)
log.WithFields(log.Fields{"name": r.Name, "id": r.ID}).Info("Attach ObjectiveFS Volume")
if !v.mounted {
if err := os.MkdirAll(v.volume.Mountpoint, 0755); err != nil {
return &volume.MountResponse{}, err
}
cmd := exec.Command("/sbin/mount.objectivefs", "-o"+v.opts, v.fs, v.volume.Mountpoint)
cmd.Env = v.env
cmd.Stdout = log.StandardLogger().Out
cmd.Stderr = log.StandardLogger().Out
log.Info("Mount ObjectiveFS Volume '%s': '%s'", r.Name, cmd)
cmd.Stdout = NewLogWriter()
cmd.Stderr = NewLogWriter()
log.WithFields(log.Fields{
"name": r.Name,
"cmd": cmd,
}).Info("Mount ObjectiveFS Volume")
if err := cmd.Run(); err != nil {
return &volume.MountResponse{}, fmt.Errorf("unexpected error mounting '%s' check log (/var/log/syslog or /var/log/messages): %s", r.Name, err.Error())
}
@@ -175,7 +178,7 @@ func (d ofsDriver) Unmount(r *volume.UnmountRequest) error {
if !ok {
return fmt.Errorf("volume '%s' not found", r.Name)
}
log.Info("Detach ObjectiveFS Volume '%s' from '%s'", r.Name, r.ID)
log.WithFields(log.Fields{"name": r.Name, "id": r.ID}).Info("Detach ObjectiveFS Volume")
delete(v.use, r.ID)
if len(v.use) == 0 && v.asap {
if err := umount(v); err != nil {
@@ -193,13 +196,11 @@ func (d ofsDriver) Capabilities() *volume.CapabilitiesResponse {
}
var (
logLevel = flag.String("log", "", "log level")
logFile = flag.String("logfile", "", "log file")
logLevel = flag.String("log", "", "log level")
logFilePath = flag.String("logfile", "", "log file")
)
func main() {
log.Info("Starting ObjectiveFS Volume Driver, version " + version)
flag.Parse()
if *logLevel == "" {
@@ -214,8 +215,8 @@ func main() {
}
log.SetLevel(level)
if *logFile != "" {
f, err := os.OpenFile(*logFile, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
if *logFilePath != "" {
f, err := os.OpenFile(*logFilePath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
if err != nil {
log.WithError(err).Fatal("Failed to open log file for writing")
}
@@ -223,6 +224,7 @@ func main() {
log.StandardLogger().Out = f
}
log.Info("Starting ObjectiveFS Volume Driver, version " + version)
d := ofsDriver{volumes: make(map[string]*ofsVolume)}
h := volume.NewHandler(d)
@@ -232,3 +234,16 @@ func main() {
log.Fatal(err)
}
}
type LogWriter struct {
}
func NewLogWriter() *LogWriter {
lw := &LogWriter{}
return lw
}
func (lw LogWriter) Write(p []byte) (n int, err error) {
log.Infoln(p)
return len(p), nil
}