blob: 400ea4c76d994e2d0c3f1cb488fec29cd5a080dc [file] [log] [blame]
package {{.PackageName}}
import (
_ "unsafe"
"os"
"strings"
)
//go:linkname {{.GetGlobalOperatorLinkMethod}} {{.GetGlobalOperatorLinkMethod}}
var {{.GetGlobalOperatorLinkMethod}} func() interface{}
//go:linkname {{.SetGlobalLoggerLinkMethod}} {{.SetGlobalLoggerLinkMethod}}
var {{.SetGlobalLoggerLinkMethod}} func(v interface{})
var {{.LogTracingEnableFuncName}} = {{.LogTypeInConfig.Tracing.Enabled.ToGoBoolFunction}}
var {{.LogTracingContextKeyFuncName}} = {{.LogTypeInConfig.Tracing.Key.ToGoStringFunction}}
func init() {
// for context.go getting operator
if {{.GetGlobalOperatorLinkMethod}} != nil {
// for operator delegator
{{.GetOperatorMethodName}} = func() {{.OperatorTypeName}} {
op := {{.GetGlobalOperatorLinkMethod}}()
if res, ok := op.({{.OperatorTypeName}}); ok {
return res
}
return nil
}
}
// for context.go change logger
if {{.SetGlobalLoggerLinkMethod}} != nil {
logType := {{.LogTypeInConfig.Type.ToGoStringValue}}
supportLogChange := false
if logType == "{{.ConfigTypeAutomaticValue}}" || logType == "{{.CurrentLogTypeName}}" {
supportLogChange = true
}
{{.ChangeLoggerMethodName}} = func(logger interface{}) {
if !supportLogChange {
return
}
// trying to change the logger if agent core existing
operator := {{.GetOperatorMethodName}}()
if operator != nil {
operator.ChangeLogger(logger)
return
}
// otherwise, change the global logger
{{.SetGlobalLoggerLinkMethod}}(logger)
}
}
}