@@ -41,6 +41,7 @@ import (
41
41
)
42
42
43
43
var PLACEHOLDER = regexp .MustCompile ("{(\\ d)}" )
44
+ var LITERAL_PERCENT_SIGN = "_LITERAL_PERCENT_SIGN_"
44
45
45
46
type Logger interface {
46
47
Fprintln (w io.Writer , level string , format string , a ... interface {})
@@ -61,11 +62,15 @@ func (s NoopLogger) Name() string {
61
62
type HumanLogger struct {}
62
63
63
64
func (s HumanLogger ) Fprintln (w io.Writer , level string , format string , a ... interface {}) {
64
- fmt .Fprintln (w , Format (format , a ... ))
65
+ msg := Format (format , a ... )
66
+ // since fmt.Fprintln will be called without vardiadic arguments, drop the second %
67
+ msg = strings .Replace (msg , LITERAL_PERCENT_SIGN , "%" , - 1 )
68
+ fmt .Fprintln (w , msg )
65
69
}
66
70
67
71
func (s HumanLogger ) Println (level string , format string , a ... interface {}) {
68
- s .Fprintln (os .Stdout , level , Format (format , a ... ))
72
+ msg := Format (format , a ... )
73
+ s .Fprintln (os .Stdout , level , msg )
69
74
}
70
75
71
76
func (s HumanLogger ) Name () string {
@@ -100,6 +105,7 @@ func (s MachineLogger) Name() string {
100
105
101
106
func FromJavaToGoSyntax (s string ) string {
102
107
submatches := PLACEHOLDER .FindAllStringSubmatch (s , - 1 )
108
+ s = strings .Replace (s , "%%" , LITERAL_PERCENT_SIGN , - 1 )
103
109
for _ , submatch := range submatches {
104
110
idx , err := strconv .Atoi (submatch [1 ])
105
111
if err != nil {
0 commit comments