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) }
변수
완료
쿼리 반복이 완료되면 Done이 반환됩니다.
함수
func Criticalf
Criticalf는 Debugf와 비슷하지만 심각 수준입니다.
func Debugf
Debugf는 fmt.Printf와 유사한 형식으로 인수의 형식을 지정하며 Debug 수준에서 텍스트를 로그 메시지로 기록합니다. 메시지는 제공된 컨텍스트와 연결된 요청과 관련 있습니다.
func Errorf
Errorf는 Debugf와 비슷하지만 오류 수준입니다.
func Infof
Infof는 Debugf와 비슷하지만 정보 수준입니다.
func Warningf
Warningf는 Debugf와 비슷하지만 경고 수준입니다.
AppLog
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
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
Next는 다음 로그 레코드를 반환합니다.