Das Paket "log" bietet die Möglichkeit, die Protokolle einer Anwendung aus einer App Engine-Anwendung zu schreiben und abzufragen.
Beispiel:
c := appengine.NewContext(r) query := &log.Query{ AppLogs: true, Versions: []string{"1"}, } for results := query.Run(c); ; { record, err := results.Next() if err == log.Done { log.Infof(c, "Done processing results") break } if err != nil { log.Errorf(c, "Failed to retrieve next log: %v", err) break } log.Infof(c, "Saw record %v", record) }
Variablen
Fertig
"Done" wird zurückgegeben, wenn eine Abfrageiteration abgeschlossen wurde.
Funktionen
func Criticalf
„Criticalf” entspricht „Debugf” auf kritischer Ebene.
func Debugf
„Debugf“ formatiert seine Argumente entsprechend dem Format, ähnlich wie „fmt.Printf“, und zeichnet den Text als Logeintrag auf Debug-Ebene auf. Die Nachricht wird der Anfrage zugeordnet, die zu dem angegebenen Kontext gehört.
func Errorf
„Errorf” entspricht „Debugf” auf Fehlerebene.
func Infof
„Infof” entspricht „Debugf” auf Infoebene.
func Warningf
„Warningf” entspricht „Debugf” auf Warnungsebene.
AppLog
„AppLog” steht für ein einzelnes Protokoll auf Anwendungsebene.
Query
type Query struct {
// Start time specifies the earliest log to return (inclusive).
StartTime time.Time
// End time specifies the latest log to return (exclusive).
EndTime time.Time
// Offset specifies a position within the log stream to resume reading from,
// and should come from a previously returned Record's field of the same name.
Offset []byte
// Incomplete controls whether active (incomplete) requests should be included.
Incomplete bool
// AppLogs indicates if application-level logs should be included.
AppLogs bool
// ApplyMinLevel indicates if MinLevel should be used to filter results.
ApplyMinLevel bool
// If ApplyMinLevel is true, only logs for requests with at least one
// application log of MinLevel or higher will be returned.
MinLevel int
// Versions is the major version IDs whose logs should be retrieved.
// Logs for specific modules can be retrieved by the specifying versions
// in the form "module:version"; the default module is used if no module
// is specified.
Versions []string
// A list of requests to search for instead of a time-based scan. Cannot be
// combined with filtering options such as StartTime, EndTime, Offset,
// Incomplete, ApplyMinLevel, or Versions.
RequestIDs []string
}
„Query” definiert eine Protokollanfrage.
func (*Query) Run
„Run” startet eine Anfrage nach Protokolldatensätzen, die Protokollinformationen auf Anfrage- und Anwendungsebene enthalten.
Datensatz
type Record struct {
AppID string
ModuleID string
VersionID string
RequestID []byte
IP string
Nickname string
AppEngineRelease string
// The time when this request started.
StartTime time.Time
// The time when this request finished.
EndTime time.Time
// Opaque cursor into the result stream.
Offset []byte
// The time required to process the request.
Latency time.Duration
MCycles int64
Method string
Resource string
HTTPVersion string
Status int32
// The size of the request sent back to the client, in bytes.
ResponseSize int64
Referrer string
UserAgent string
URLMapEntry string
Combined string
Host string
// The estimated cost of this request, in dollars.
Cost float64
TaskQueueName string
TaskName string
WasLoadingRequest bool
PendingTime time.Duration
Finished bool
AppLogs []AppLog
// Mostly-unique identifier for the instance that handled the request if available.
InstanceID string
}
„Record” enthält alle Informationen für eine einzelne Webanfrage.
Ergebnis
type Result struct {
// contains filtered or unexported fields
}
„Result” gibt das Ergebnis einer Anfrage wieder.
func (*Result) Next
"Next" gibt den nächsten Protokolldatensatz zurück,