@@ -5,30 +5,40 @@ package nxlog4go
5
5
6
6
import (
7
7
"bytes"
8
- "log"
8
+ stdlog "log"
9
9
)
10
10
11
11
// NewStdLog returns a *log.Logger which writes to the supplied logger Entry at
12
12
// Info Level.
13
- func NewStdLog (e * Entry ) * log.Logger {
13
+ //
14
+ // Example: log := NewStdLogAt(e.AddCallerSkip(3), level)
15
+ func NewStdLog (e * Entry ) * stdlog.Logger {
14
16
logFunc := e .Info
15
- return log .New (& logWriter {logFunc }, "" /* prefix */ , 0 /* flags */ )
17
+ return stdlog .New (& logWriter {logFunc }, /* out io.Writer */
18
+ "" , /* prefix */
19
+ 0 /* flags */ )
16
20
}
17
21
18
22
// NewStdLogAt returns *log.Logger which writes to supplied logger Entry at
19
23
// required level.
20
- func NewStdLogAt (e * Entry , level interface {}) * log.Logger {
21
- logFunc := levelToFunc (e , level )
22
- return log .New (& logWriter {logFunc }, "" /* prefix */ , 0 /* flags */ )
24
+ //
25
+ // Example: log := NewStdLogAt(e.AddCallerSkip(3), "debug")
26
+ func NewStdLogAt (e * Entry , level interface {}) * stdlog.Logger {
27
+ logWriteFunc := levelToWriteFunc (e , level )
28
+ return stdlog .New (& logWriter {logWriteFunc }, /* out io.Writer */
29
+ "" , /* prefix */
30
+ 0 /* flags */ )
23
31
}
24
32
25
33
// RedirectStdLog redirects output from the standard library's package-global
26
- // logger to the supplied logger at InfoLevel . Since zap already handles caller
34
+ // logger to the supplied logger at Info level . Since Entry already handles caller
27
35
// annotations, timestamps, etc., it automatically disables the standard
28
36
// library's annotations and prefixing.
29
37
//
30
38
// It returns a function to restore the original prefix and flags and reset the
31
- // standard library's output to os.Stderr.
39
+ // output io.Writer to os.Stderr.
40
+ //
41
+ // Example: restoreFunc := RedirectStdLog(elog.AddCallerSkip(3))
32
42
func RedirectStdLog (e * Entry ) func () {
33
43
return redirectStdLogAt (e , INFO )
34
44
}
@@ -40,26 +50,29 @@ func RedirectStdLog(e *Entry) func() {
40
50
//
41
51
// It returns a function to restore the original prefix and flags and reset the
42
52
// standard library's output to os.Stderr.
53
+ //
54
+ // Example: restoreFunc := RedirectStdLogAt(elog.AddCallerSkip(3), "debug")
43
55
func RedirectStdLogAt (e * Entry , level interface {}) func () {
44
56
return redirectStdLogAt (e , level )
45
57
}
46
58
47
59
func redirectStdLogAt (e * Entry , level interface {}) func () {
48
- flags := log .Flags ()
49
- prefix := log .Prefix ()
50
- writer := log .Writer ()
51
- log .SetFlags (0 )
52
- log .SetPrefix ("" )
53
- logFunc := levelToFunc (e .AddCallerSkip (3 ), level )
54
- log .SetOutput (& logWriter {logFunc })
60
+ flags := stdlog .Flags ()
61
+ prefix := stdlog .Prefix ()
62
+ writer := stdlog .Writer ()
63
+ stdlog .SetFlags (0 )
64
+ stdlog .SetPrefix ("" )
65
+ writeFunc := levelToWriteFunc (e , level )
66
+ stdlog .SetOutput (& logWriter {writeFunc })
67
+
68
+ // Return the restore original function
55
69
return func () {
56
- log .SetFlags (flags )
57
- log .SetPrefix (prefix )
58
- log .SetOutput (writer )
70
+ stdlog .SetFlags (flags )
71
+ stdlog .SetPrefix (prefix )
72
+ stdlog .SetOutput (writer )
59
73
}
60
74
}
61
-
62
- func levelToFunc (e * Entry , level interface {}) func (interface {}, ... interface {}) {
75
+ func levelToWriteFunc (e * Entry , level interface {}) func (interface {}, ... interface {}) {
63
76
n := Level (INFO ).Int (level )
64
77
switch n {
65
78
case FINEST :
0 commit comments