File tree 2 files changed +34
-0
lines changed
2 files changed +34
-0
lines changed Original file line number Diff line number Diff line change
1
+ package err2
2
+
3
+ import (
4
+ "flag"
5
+
6
+ "github.com/lainio/err2/internal/tracer"
7
+ )
8
+
9
+ func init () {
10
+ flag .Var (& tracer .Log , "err2-log" , "stream for logging" )
11
+ flag .Var (& tracer .Error , "err2-trace" , "stream for error tracing" )
12
+ flag .Var (& tracer .Panic , "err2-panic-trace" , "stream for panic tracing" )
13
+ }
Original file line number Diff line number Diff line change 5
5
"io"
6
6
"os"
7
7
"sync/atomic"
8
+
9
+ "github.com/lainio/err2/internal/x"
8
10
)
9
11
10
12
type value struct {
@@ -37,3 +39,22 @@ func (v *value) Tracer() io.Writer {
37
39
func (v * value ) SetTracer (w io.Writer ) {
38
40
v .Store (writer {w : w })
39
41
}
42
+
43
+ // String is part of the flag interfaces
44
+ func (v * value ) String () string {
45
+ return x .Whom (v .Tracer () != nil , "true" , "false" )
46
+ }
47
+
48
+ // Get is part of the flag interfaces, getter.
49
+ func (v * value ) Get () any { return nil }
50
+
51
+ // Set is part of the flag.Value interface.
52
+ func (v * value ) Set (value string ) error {
53
+ switch value {
54
+ case "stderr" :
55
+ v .SetTracer (os .Stderr )
56
+ case "stdout" :
57
+ v .SetTracer (os .Stdout )
58
+ }
59
+ return nil
60
+ }
You can’t perform that action at this time.
0 commit comments