|
|
@@ -57,22 +57,32 @@ func rebuild(l Logger, subPath, prefix string, withMain bool) Logger {
|
|
|
}
|
|
|
} else {
|
|
|
if w == os.Stdout {
|
|
|
- pool = append(pool, Console())
|
|
|
+ if withMain {
|
|
|
+ pool = append(pool, Console())
|
|
|
+ }
|
|
|
} else {
|
|
|
pool = append(pool, w)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ if len(pool) == 0 {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
return NewLog(old.level, pool, prefix, old.depth, old.buf)
|
|
|
case MultiLogger:
|
|
|
- part := make(MultiLogger, len(old))
|
|
|
- for i, ol := range old {
|
|
|
+ part := make(MultiLogger, 0, len(old))
|
|
|
+ for _, ol := range old {
|
|
|
if lg, ok := ol.(*Log); ok {
|
|
|
- part[i] = rebuild(lg, subPath, prefix, withMain)
|
|
|
+ if ng := rebuild(lg, subPath, prefix, withMain); ng != nil {
|
|
|
+ part = append(part, ng)
|
|
|
+ }
|
|
|
} else {
|
|
|
- part[i] = ol
|
|
|
+ part = append(part, ol)
|
|
|
}
|
|
|
}
|
|
|
+ if len(part) == 1 {
|
|
|
+ return part[0]
|
|
|
+ }
|
|
|
return part
|
|
|
default:
|
|
|
return l
|