The log package

import "google.golang.org/appengine/log"

Introduction

Package log provides the means of querying an application's logs from within an App Engine application.

Example:

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)
}

Index

Variables
func Criticalf(ctx context.Context, format string, args ...interface{})
func Debugf(ctx context.Context, format string, args ...interface{})
func Errorf(ctx context.Context, format string, args ...interface{})
func Infof(ctx context.Context, format string, args ...interface{})
func Warningf(ctx context.Context, format string, args ...interface{})
type AppLog
type Query
    func (params *Query) Run(c context.Context) *Result
type Record
type Result
    func (qr *Result) Next() (*Record, error)

Variables

var Done = errors.New("log: query has no more results")

Done is returned when a query iteration has completed.

func Criticalf

func Criticalf(ctx context.Context, format string, args ...interface{})

Criticalf is like Debugf, but at Critical level.

func Debugf

func Debugf(ctx context.Context, format string, args ...interface{})

Debugf formats its arguments according to the format, analogous to fmt.Printf, and records the text as a log message at Debug level. The message will be associated with the request linked with the provided context.

func Errorf

func Errorf(ctx context.Context, format string, args ...interface{})

Errorf is like Debugf, but at Error level.

func Infof

func Infof(ctx context.Context, format string, args ...interface{})

Infof is like Debugf, but at Info level.

func Warningf

func Warningf(ctx context.Context, format string, args ...interface{})

Warningf is like Debugf, but at Warning level.

type AppLog

type AppLog struct {
    Time    time.Time
    Level   int
    Message string
}

AppLog represents a single application-level log.

type 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 defines a logs query.

func (*Query) Run

func (params *Query) Run(c context.Context) *Result

Run starts a query for log records, which contain request and application level log information.

type Record

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 contains all the information for a single web request.

type Result

type Result struct {
    // contains filtered or unexported fields
}

Result represents the result of a query.

func (*Result) Next

func (qr *Result) Next() (*Record, error)

Next returns the next log record,

Monitor your resources on the go

Get the Google Cloud Console app to help you manage your projects.

Send feedback about...

App Engine standard environment for Go