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