32 lines
		
	
	
		
			749 B
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			32 lines
		
	
	
		
			749 B
		
	
	
	
		
			Go
		
	
	
	
	
	
|  | package metrics | ||
|  | 
 | ||
|  | import ( | ||
|  | 	"encoding/json" | ||
|  | 	"io" | ||
|  | 	"time" | ||
|  | ) | ||
|  | 
 | ||
|  | // MarshalJSON returns a byte slice containing a JSON representation of all | ||
|  | // the metrics in the Registry. | ||
|  | func (r *StandardRegistry) MarshalJSON() ([]byte, error) { | ||
|  | 	return json.Marshal(r.GetAll()) | ||
|  | } | ||
|  | 
 | ||
|  | // WriteJSON writes metrics from the given registry  periodically to the | ||
|  | // specified io.Writer as JSON. | ||
|  | func WriteJSON(r Registry, d time.Duration, w io.Writer) { | ||
|  | 	for range time.Tick(d) { | ||
|  | 		WriteJSONOnce(r, w) | ||
|  | 	} | ||
|  | } | ||
|  | 
 | ||
|  | // WriteJSONOnce writes metrics from the given registry to the specified | ||
|  | // io.Writer as JSON. | ||
|  | func WriteJSONOnce(r Registry, w io.Writer) { | ||
|  | 	json.NewEncoder(w).Encode(r) | ||
|  | } | ||
|  | 
 | ||
|  | func (p *PrefixedRegistry) MarshalJSON() ([]byte, error) { | ||
|  | 	return json.Marshal(p.GetAll()) | ||
|  | } |