blob: af0fe81af36dcedd4f42ca182d95c2bc0d4bae76 [file] [log] [blame]
// Copyright (C) 2016 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package log
// The context key used to store the call flow tracing for a logger in the log context
const TraceKey = "trace"
// GetTrace gets the call trace from this context.
func GetTrace(ctx Context) *Chain {
v, _ := ctx.Value(TraceKey).(*Chain)
return v
}
// Enter returns a context with an entry added to the trace chain.
func (ctx logContext) Enter(name string) Context {
return ctx.setValue(TraceKey, &Chain{Value: name, Next: GetTrace(ctx)})
}