@@ -54,102 +54,111 @@ func setPrefixPath() {
5454}
5555
5656func (l * Logger ) Debug (v ... interface {}) {
57- l .writeLog (debug_severety , strings .TrimSpace (fmt .Sprintln (v ... )), nil )
57+ l .writeLog (debug_severety , strings .TrimSpace (fmt .Sprintln (v ... )))
5858}
5959
6060func (l * Logger ) Info (v ... interface {}) {
61- l .writeLog (info_severety , strings .TrimSpace (fmt .Sprintln (v ... )), nil )
61+ l .writeLog (info_severety , strings .TrimSpace (fmt .Sprintln (v ... )))
6262}
6363
6464func (l * Logger ) Notice (v ... interface {}) {
65- l .writeLog (notice_severety , strings .TrimSpace (fmt .Sprintln (v ... )), nil )
65+ l .writeLog (notice_severety , strings .TrimSpace (fmt .Sprintln (v ... )))
6666}
6767
6868func (l * Logger ) Warning (v ... interface {}) {
69- l .writeLog (warning_severety , strings .TrimSpace (fmt .Sprintln (v ... )), nil )
69+ l .writeLog (warning_severety , strings .TrimSpace (fmt .Sprintln (v ... )))
7070}
7171
7272func (l * Logger ) Error (v ... interface {}) {
73- l .writeLog (error_severety , strings .TrimSpace (fmt .Sprintln (v ... )), nil )
73+ l .writeLog (error_severety , strings .TrimSpace (fmt .Sprintln (v ... )))
7474}
7575
7676func (l * Logger ) Critical (v ... interface {}) {
77- l .writeLog (critical_severety , strings .TrimSpace (fmt .Sprintln (v ... )), nil )
77+ l .writeLog (critical_severety , strings .TrimSpace (fmt .Sprintln (v ... )))
7878}
7979
8080func (l * Logger ) Alert (v ... interface {}) {
81- l .writeLog (alert_severety , strings .TrimSpace (fmt .Sprintln (v ... )), nil )
81+ l .writeLog (alert_severety , strings .TrimSpace (fmt .Sprintln (v ... )))
8282}
8383
8484func (l * Logger ) Emergency (v ... interface {}) {
85- l .writeLog (emergency_severety , strings .TrimSpace (fmt .Sprintln (v ... )), nil )
85+ l .writeLog (emergency_severety , strings .TrimSpace (fmt .Sprintln (v ... )))
8686}
8787
8888func (l * Logger ) Debugf (format string , v ... interface {}) {
89- l .writeLog (debug_severety , fmt .Sprintf (format , v ... ), nil )
89+ l .writeLog (debug_severety , fmt .Sprintf (format , v ... ))
9090}
9191
9292func (l * Logger ) Infof (format string , v ... interface {}) {
93- l .writeLog (info_severety , fmt .Sprintf (format , v ... ), nil )
93+ l .writeLog (info_severety , fmt .Sprintf (format , v ... ))
9494}
9595
9696func (l * Logger ) Noticef (format string , v ... interface {}) {
97- l .writeLog (notice_severety , fmt .Sprintf (format , v ... ), nil )
97+ l .writeLog (notice_severety , fmt .Sprintf (format , v ... ))
9898}
9999
100100func (l * Logger ) Warningf (format string , v ... interface {}) {
101- l .writeLog (warning_severety , fmt .Sprintf (format , v ... ), nil )
101+ l .writeLog (warning_severety , fmt .Sprintf (format , v ... ))
102102}
103103
104104func (l * Logger ) Errorf (format string , v ... interface {}) {
105- l .writeLog (error_severety , fmt .Sprintf (format , v ... ), nil )
105+ l .writeLog (error_severety , fmt .Sprintf (format , v ... ))
106106}
107107
108108func (l * Logger ) Criticalf (format string , v ... interface {}) {
109- l .writeLog (critical_severety , fmt .Sprintf (format , v ... ), nil )
109+ l .writeLog (critical_severety , fmt .Sprintf (format , v ... ))
110110}
111111
112112func (l * Logger ) Alertf (format string , v ... interface {}) {
113- l .writeLog (alert_severety , fmt .Sprintf (format , v ... ), nil )
113+ l .writeLog (alert_severety , fmt .Sprintf (format , v ... ))
114114}
115115
116116func (l * Logger ) Emergencyf (format string , v ... interface {}) {
117- l .writeLog (emergency_severety , fmt .Sprintf (format , v ... ), nil )
117+ l .writeLog (emergency_severety , fmt .Sprintf (format , v ... ))
118118}
119119
120- func (l * Logger ) Debugj (message string , obj interface {}) {
121- l .writeLog (debug_severety , message , obj )
120+ type Field struct {
121+ Key string
122+ Value interface {}
122123}
123124
124- func (l * Logger ) Infoj ( message string , obj interface {}) {
125- l . writeLog ( info_severety , message , obj )
125+ func (l * Logger ) Field ( key string , field interface {}) * Field {
126+ return & Field { key , field }
126127}
127128
128- func (l * Logger ) Noticej (message string , obj interface {} ) {
129- l .writeLog (notice_severety , message , obj )
129+ func (l * Logger ) Debugj (message string , fields ... * Field ) {
130+ l .writeLog (debug_severety , message , fields ... )
130131}
131132
132- func (l * Logger ) Warningj (message string , obj interface {} ) {
133- l .writeLog (warning_severety , message , obj )
133+ func (l * Logger ) Infoj (message string , fields ... * Field ) {
134+ l .writeLog (info_severety , message , fields ... )
134135}
135136
136- func (l * Logger ) Errorj (message string , obj interface {} ) {
137- l .writeLog (error_severety , message , obj )
137+ func (l * Logger ) Noticej (message string , fields ... * Field ) {
138+ l .writeLog (notice_severety , message , fields ... )
138139}
139140
140- func (l * Logger ) Criticalj (message string , obj interface {} ) {
141- l .writeLog (critical_severety , message , obj )
141+ func (l * Logger ) Warningj (message string , fields ... * Field ) {
142+ l .writeLog (warning_severety , message , fields ... )
142143}
143144
144- func (l * Logger ) Alertj (message string , obj interface {} ) {
145- l .writeLog (alert_severety , message , obj )
145+ func (l * Logger ) Errorj (message string , fields ... * Field ) {
146+ l .writeLog (error_severety , message , fields ... )
146147}
147148
148- func (l * Logger ) Emergencyj (message string , obj interface {} ) {
149- l .writeLog (emergency_severety , message , obj )
149+ func (l * Logger ) Criticalj (message string , fields ... * Field ) {
150+ l .writeLog (critical_severety , message , fields ... )
150151}
151152
152- func (l * Logger ) writeLog (severety severety , message string , obj interface {}) {
153+ func (l * Logger ) Alertj (message string , fields ... * Field ) {
154+ l .writeLog (alert_severety , message , fields ... )
155+ }
156+
157+ func (l * Logger ) Emergencyj (message string , fields ... * Field ) {
158+ l .writeLog (emergency_severety , message , fields ... )
159+ }
160+
161+ func (l * Logger ) writeLog (severety severety , message string , fields ... * Field ) {
153162 output := os .Stderr
154163
155164 var isError bool
@@ -161,8 +170,8 @@ func (l *Logger) writeLog(severety severety, message string, obj interface{}) {
161170 pc , file , line , _ := runtime .Caller (2 )
162171
163172 if l == nil {
164- if obj != nil {
165- j , _ := json .Marshal (obj )
173+ if len ( fields ) > 0 {
174+ j , _ := json .Marshal (fields )
166175 fmt .Fprintf (
167176 output ,
168177 "%s in [%s:%d]: %s\n %s\n " ,
@@ -199,8 +208,16 @@ func (l *Logger) writeLog(severety severety, message string, obj interface{}) {
199208 }
200209 }
201210
211+ jPayload := map [string ]interface {}{}
212+ for _ , field := range fields {
213+ if field .Key == "message" {
214+ field .Key = "_message_" // this is to prevent the main message from beeing overwritten
215+ }
216+ jPayload [field .Key ] = field .Value
217+ }
218+
202219 payload := & stackdriverLogStruct {
203- JsonPayload : obj ,
220+ JsonPayload : jPayload ,
204221 Message : message ,
205222 Severity : severety ,
206223 Timestamp : time .Now (),
@@ -233,13 +250,13 @@ func relative(path string) string {
233250
234251// stackdriverLogStruct source https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntry
235252type stackdriverLogStruct struct {
236- Message string `json:"message"`
237- JsonPayload interface {} `json:"jsonPayload,omitempty"`
238- Severity severety `json:"severity"`
239- Timestamp time.Time `json:"timestamp"`
240- SourceLocation * sourceLocation `json:"logging.googleapis.com/sourceLocation"`
241- Type * string `json:"@type,omitempty"`
242- ServiceContext * ServiceContext `json:"serviceContext,omitempty"`
253+ Message string `json:"message"`
254+ JsonPayload map [ string ] interface {} `json:"jsonPayload,omitempty"`
255+ Severity severety `json:"severity"`
256+ Timestamp time.Time `json:"timestamp"`
257+ SourceLocation * sourceLocation `json:"logging.googleapis.com/sourceLocation"`
258+ Type * string `json:"@type,omitempty"`
259+ ServiceContext * ServiceContext `json:"serviceContext,omitempty"`
243260}
244261type ServiceContext struct {
245262 Service string `json:"service"`
0 commit comments