tools/go-agent/instrument/logger/frameworks/api.go (38 lines of code) (raw):

// Licensed to Apache Software Foundation (ASF) under one or more contributor // license agreements. See the NOTICE file distributed with // this work for additional information regarding copyright // ownership. Apache Software Foundation (ASF) licenses this file to you 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 frameworks import ( "embed" "time" "github.com/apache/skywalking-go/plugins/core/operator" "github.com/apache/skywalking-go/tools/go-agent/instrument/plugins/rewrite" "github.com/dave/dst" "github.com/dave/dst/dstutil" ) // FrameworkFS export the templates of logger // //go:embed * var FrameworkFS embed.FS // ChangeLogger change the agent logger var ChangeLogger = func(i operator.LogOperator) { } // LogTracingContextEnable check log the tracing context enable var LogTracingContextEnable = false // LogReporterEnable check log the reporter enable var LogReporterEnable = false // LogReporterLabelKeys get the reporter customized label keys var LogReporterLabelKeys []string // LogTracingContextKey get the tracing context key // nolint var LogTracingContextKey = "SW_CTX" // GetLogContext get the tracing context var GetLogContext = func(withEndpoint bool) interface{} { return nil } // GetLogContextString get the log context string func GetLogContextString() string { return "" } // ReportLog report the log to backend var ReportLog = func(ctx interface{}, time time.Time, level, msg string, labels map[string]string) { } type PackageConfiguration struct { // needs to generate the operator helpers NeedsHelpers bool // needs to generate the operator variables NeedsVariables bool // needs the change logger method NeedsChangeLoggerFunc bool } type LogFramework interface { // Name of the framework Name() string // PackagePaths of the framework, define which package needs to be instrumented PackagePaths() map[string]*PackageConfiguration // AutomaticBindFunctions if the filtered method invoke and log type is automatic detect, // then when the method invoke, the log type would be current framework AutomaticBindFunctions(fun *dst.FuncDecl) string // GenerateExtraFiles used to generate files to setting logger and adapt the tracing context GenerateExtraFiles(pkgPath, debugDir string) ([]*rewrite.FileInfo, error) // CustomizedEnhance used to customized enhance the log framework CustomizedEnhance(path string, curFile *dst.File, cursor *dstutil.Cursor, allFiles []*dst.File) (map[string]string, bool) // InitFunctions used to init the log framework InitFunctions() []*dst.FuncDecl // InitImports used to import the log framework when init functions InitImports() []*dst.ImportSpec }