浏览代码

lib/fs: Introduce walkfs debug facility (#4712)

Simon Frei 7 年之前
父节点
当前提交
8a3e584c19
共有 2 个文件被更改,包括 16 次插入4 次删除
  1. 8 1
      lib/fs/debug.go
  2. 8 3
      lib/fs/filesystem.go

+ 8 - 1
lib/fs/debug.go

@@ -18,5 +18,12 @@ var (
 )
 
 func init() {
-	l.SetDebug("fs", strings.Contains(os.Getenv("STTRACE"), "fs") || os.Getenv("STTRACE") == "all")
+	logger.DefaultLogger.NewFacility("walkfs", "Filesystem access while walking")
+	switch {
+	case strings.Contains(os.Getenv("STTRACE"), "walkfs") || os.Getenv("STTRACE") == "all":
+		l.SetDebug("walkfs", true)
+		fallthrough
+	case strings.Contains(os.Getenv("STTRACE"), "fs"):
+		l.SetDebug("fs", true)
+	}
 }

+ 8 - 3
lib/fs/filesystem.go

@@ -160,7 +160,7 @@ func NewFilesystem(fsType FilesystemType, uri string) Filesystem {
 	var fs Filesystem
 	switch fsType {
 	case FilesystemTypeBasic:
-		fs = NewWalkFilesystem(newBasicFilesystem(uri))
+		fs = newBasicFilesystem(uri)
 	default:
 		l.Debugln("Unknown filesystem", fsType, uri)
 		fs = &errorFilesystem{
@@ -170,10 +170,15 @@ func NewFilesystem(fsType FilesystemType, uri string) Filesystem {
 		}
 	}
 
+	if l.ShouldDebug("walkfs") {
+		return NewWalkFilesystem(&logFilesystem{fs})
+	}
+
 	if l.ShouldDebug("fs") {
-		fs = &logFilesystem{fs}
+		return &logFilesystem{NewWalkFilesystem(fs)}
 	}
-	return fs
+
+	return NewWalkFilesystem(fs)
 }
 
 // IsInternal returns true if the file, as a path relative to the folder