google.golang.org/appengine/log 패키지(v1.6.8)

log 패키지는 App Engine 애플리케이션 내에서 애플리케이션의 로그를 작성 및 쿼리하는 데 사용됩니다.

예:

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

변수

완료

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

쿼리 반복이 완료되면 Done이 반환됩니다.

함수

func Criticalf

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

Criticalf는 Debugf와 비슷하지만 심각 수준입니다.

func Debugf

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

Debugf는 fmt.Printf와 유사한 형식으로 인수의 형식을 지정하며 Debug 수준에서 텍스트를 로그 메시지로 기록합니다. 메시지는 제공된 컨텍스트와 연결된 요청과 관련 있습니다.

func Errorf

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

Errorf는 Debugf와 비슷하지만 오류 수준입니다.

func Infof

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

Infof는 Debugf와 비슷하지만 정보 수준입니다.

func Warningf

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

Warningf는 Debugf와 비슷하지만 경고 수준입니다.

AppLog

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

AppLog는 애플리케이션 수준의 단일 로그를 나타냅니다.

쿼리

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는 로그 쿼리를 정의합니다.

func (*Query) Run

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

Run은 로그 레코드에 대한 쿼리를 시작하며, 요청 및 애플리케이션 수준의 로그 정보가 포함됩니다.

레코드

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에는 단일 웹 요청에 대한 모든 정보가 포함되어 있습니다.

결과

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

Result는 쿼리 결과를 나타냅니다.

func (*Result) Next

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

Next는 다음 로그 레코드를 반환합니다.