Skip to content

Commit ca3d002

Browse files
41tairclaudeYeuoly
authored
Feat/Implement structured logging and Trace ID propagation (#552)
* use slog instead of log package and format to new log schema * update the environment name to LOG_OUTPUT_FORMAT * add the env to .env.example * fix log reference error * change the order of milldlewares * delete unused code * fix the concurrently session potential race condition * fix the log format in tests * update the duplicate code * refactor: convert log functions to slog structured format - Change log.Error/Info/Warn/Debug/Panic to accept msg + key-value pairs - Remove printf-style formatting from log functions - Update log calls in internal/cluster, internal/db, internal/core/session_manager - Remove unused 'initialized' variable from log package - Remaining files will be updated in follow-up commits 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * refactor: update all log call sites to use slog structured format Convert all log.Error, log.Info, log.Warn, log.Debug, and log.Panic calls from printf-style formatting to slog key-value pairs. Before: log.Error("failed to do something: %s", err.Error()) After: log.Error("failed to do something", "error", err) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * refactor: update cmd/ log calls to use slog structured format 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * feat: implement GnetLogger for structured logging in gnet * refactor: remove deprecated log visibility functions and related calls * feat: enhance session management with trace and identity context propagation * feat: implement serverless transaction handler and writer for plugin runtime * refactor: rename context field to traceCtx in RealBackwardsInvocation --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com> Co-authored-by: Yeuoly <admin@srmxy.cn>
1 parent bf9e6e9 commit ca3d002

File tree

88 files changed

+1262
-380
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

88 files changed

+1262
-380
lines changed

.env.example

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,10 @@ DIFY_PLUGIN_SERVERLESS_CONNECTOR_API_KEY=HeRFb6yrzAy5vUSlJWK2lUl36mpkaRycv4witbQ
129129
# python environment init timeout, if the python environment init process is not finished within this time, it will be killed
130130
PYTHON_ENV_INIT_TIMEOUT=120
131131

132+
# log settings
133+
# LOG_OUTPUT_FORMAT: text or json
134+
LOG_OUTPUT_FORMAT=text
135+
132136
# pprof enabled, for debugging
133137
PPROF_ENABLED=false
134138

cmd/commandline/bundle.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ var (
4848
repoPattern := c.Flag("repo_pattern").Value.String()
4949
githubPattern, err := bundle_entities.NewGithubRepoPattern(repoPattern)
5050
if err != nil {
51-
log.Error("Invalid github repo pattern: %v", err)
51+
log.Error("invalid github repo pattern", "error", err)
5252
return
5353
}
5454
bundle.AddGithubDependency(bundlePath, githubPattern)
@@ -65,7 +65,7 @@ var (
6565
marketplacePatternString := c.Flag("marketplace_pattern").Value.String()
6666
marketplacePattern, err := bundle_entities.NewMarketplacePattern(marketplacePatternString)
6767
if err != nil {
68-
log.Error("Invalid marketplace pattern: %v", err)
68+
log.Error("invalid marketplace pattern", "error", err)
6969
return
7070
}
7171
bundle.AddMarketplaceDependency(bundlePath, marketplacePattern)
@@ -105,7 +105,7 @@ var (
105105
index := c.Flag("index").Value.String()
106106
indexInt, err := strconv.Atoi(index)
107107
if err != nil {
108-
log.Error("Invalid index: %v", err)
108+
log.Error("invalid index", "error", err)
109109
return
110110
}
111111
bundle.RemoveDependency(bundlePath, indexInt)

cmd/commandline/bundle/bump_version.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,19 @@ import (
88
func BumpVersion(bundlePath string, targetVersion string) {
99
packager, err := loadBundlePackager(bundlePath)
1010
if err != nil {
11-
log.Error("Failed to load bundle packager: %v", err)
11+
log.Error("failed to load bundle packager", "error", err)
1212
return
1313
}
1414

1515
targetVersionObject, err := manifest_entities.NewVersion(targetVersion)
1616
if err != nil {
17-
log.Error("Failed to parse target version: %v", err)
17+
log.Error("failed to parse target version", "error", err)
1818
return
1919
}
2020

2121
packager.BumpVersion(targetVersionObject)
2222
if err := packager.Save(); err != nil {
23-
log.Error("Failed to save bundle packager: %v", err)
23+
log.Error("failed to save bundle packager", "error", err)
2424
return
2525
}
2626
}

cmd/commandline/bundle/dep.go

Lines changed: 37 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -25,151 +25,152 @@ func loadBundlePackager(bundlePath string) (bundle_packager.BundlePackager, erro
2525
func AddGithubDependency(bundlePath string, pattern bundle_entities.GithubRepoPattern) {
2626
packager, err := loadBundlePackager(bundlePath)
2727
if err != nil {
28-
log.Error("Failed to load bundle packager: %v", err)
28+
log.Error("failed to load bundle packager", "error", err)
2929
return
3030
}
3131

3232
packager.AppendGithubDependency(pattern)
3333
if err := packager.Save(); err != nil {
34-
log.Error("Failed to save bundle packager: %v", err)
34+
log.Error("failed to save bundle packager", "error", err)
3535
return
3636
}
3737

38-
log.Info("Successfully added github dependency")
38+
log.Info("successfully added github dependency")
3939
}
4040

4141
func AddMarketplaceDependency(bundlePath string, pattern bundle_entities.MarketplacePattern) {
4242
packager, err := loadBundlePackager(bundlePath)
4343
if err != nil {
44-
log.Error("Failed to load bundle packager: %v", err)
44+
log.Error("failed to load bundle packager", "error", err)
4545
return
4646
}
4747

4848
packager.AppendMarketplaceDependency(pattern)
4949
if err := packager.Save(); err != nil {
50-
log.Error("Failed to save bundle packager: %v", err)
50+
log.Error("failed to save bundle packager", "error", err)
5151
return
5252
}
5353

54-
log.Info("Successfully added marketplace dependency")
54+
log.Info("successfully added marketplace dependency")
5555
}
5656

5757
func AddPackageDependency(bundlePath string, path string) {
5858
packager, err := loadBundlePackager(bundlePath)
5959
if err != nil {
60-
log.Error("Failed to load bundle packager: %v", err)
60+
log.Error("failed to load bundle packager", "error", err)
6161
return
6262
}
6363

6464
if err := packager.AppendPackageDependency(path); err != nil {
65-
log.Error("Failed to append package dependency: %v", err)
65+
log.Error("failed to append package dependency", "error", err)
6666
return
6767
}
6868

6969
if err := packager.Save(); err != nil {
70-
log.Error("Failed to save bundle packager: %v", err)
70+
log.Error("failed to save bundle packager", "error", err)
7171
return
7272
}
7373

74-
log.Info("Successfully added package dependency")
74+
log.Info("successfully added package dependency")
7575
}
7676

7777
func RegenerateBundle(bundlePath string) {
7878
bundle, err := generateNewBundle()
7979
if err != nil {
80-
log.Error("Failed to generate new bundle: %v", err)
80+
log.Error("failed to generate new bundle", "error", err)
8181
return
8282
}
8383

8484
packager, err := loadBundlePackager(bundlePath)
8585
if err != nil {
86-
log.Error("Failed to load bundle packager: %v", err)
86+
log.Error("failed to load bundle packager", "error", err)
8787
return
8888
}
8989

9090
packager.Regenerate(*bundle)
9191
if err := packager.Save(); err != nil {
92-
log.Error("Failed to save bundle packager: %v", err)
92+
log.Error("failed to save bundle packager", "error", err)
9393
return
9494
}
9595

96-
log.Info("Successfully regenerated bundle")
96+
log.Info("successfully regenerated bundle")
9797
}
9898

9999
func RemoveDependency(bundlePath string, index int) {
100100
packager, err := loadBundlePackager(bundlePath)
101101
if err != nil {
102-
log.Error("Failed to load bundle packager: %v", err)
102+
log.Error("failed to load bundle packager", "error", err)
103103
return
104104
}
105105

106106
if err := packager.Remove(index); err != nil {
107-
log.Error("Failed to remove dependency: %v", err)
107+
log.Error("failed to remove dependency", "error", err)
108108
return
109109
}
110110

111111
if err := packager.Save(); err != nil {
112-
log.Error("Failed to save bundle packager: %v", err)
112+
log.Error("failed to save bundle packager", "error", err)
113113
return
114114
}
115115

116-
log.Info("Successfully removed dependency")
116+
log.Info("successfully removed dependency")
117117
}
118118

119119
func ListDependencies(bundlePath string) {
120120
packager, err := loadBundlePackager(bundlePath)
121121
if err != nil {
122-
log.Error("Failed to load bundle packager: %v", err)
122+
log.Error("failed to load bundle packager", "error", err)
123123
return
124124
}
125125

126126
dependencies, err := packager.ListDependencies()
127127
if err != nil {
128-
log.Error("Failed to list dependencies: %v", err)
128+
log.Error("failed to list dependencies", "error", err)
129129
return
130130
}
131131

132132
if len(dependencies) == 0 {
133-
log.Info("No dependencies found")
133+
log.Info("no dependencies found")
134134
return
135135
}
136136

137137
for i, dependency := range dependencies {
138-
log.Info("========== Dependency %d ==========", i)
138+
log.Info("dependency", "index", i)
139139
if dependency.Type == bundle_entities.DEPENDENCY_TYPE_GITHUB {
140140
githubDependency, ok := dependency.Value.(bundle_entities.GithubDependency)
141141
if !ok {
142-
log.Error("Failed to assert github pattern")
142+
log.Error("failed to assert github pattern")
143143
continue
144144
}
145145

146-
log.Info("Dependency Type: Github, Pattern: %s", githubDependency.RepoPattern)
147-
log.Info("Github Repo: %s", githubDependency.RepoPattern.Repo())
148-
log.Info("Release: %s", githubDependency.RepoPattern.Release())
149-
log.Info("Asset: %s", githubDependency.RepoPattern.Asset())
146+
log.Info("github dependency",
147+
"pattern", githubDependency.RepoPattern,
148+
"repo", githubDependency.RepoPattern.Repo(),
149+
"release", githubDependency.RepoPattern.Release(),
150+
"asset", githubDependency.RepoPattern.Asset())
150151
} else if dependency.Type == bundle_entities.DEPENDENCY_TYPE_MARKETPLACE {
151152
marketplaceDependency, ok := dependency.Value.(bundle_entities.MarketplaceDependency)
152153
if !ok {
153-
log.Error("Failed to assert marketplace pattern")
154+
log.Error("failed to assert marketplace pattern")
154155
continue
155156
}
156157

157-
log.Info("Dependency Type: Marketplace, Pattern: %s", marketplaceDependency.MarketplacePattern)
158-
log.Info("Organization: %s", marketplaceDependency.MarketplacePattern.Organization())
159-
log.Info("Plugin: %s", marketplaceDependency.MarketplacePattern.Plugin())
160-
log.Info("Version: %s", marketplaceDependency.MarketplacePattern.Version())
158+
log.Info("marketplace dependency",
159+
"pattern", marketplaceDependency.MarketplacePattern,
160+
"organization", marketplaceDependency.MarketplacePattern.Organization(),
161+
"plugin", marketplaceDependency.MarketplacePattern.Plugin(),
162+
"version", marketplaceDependency.MarketplacePattern.Version())
161163
} else if dependency.Type == bundle_entities.DEPENDENCY_TYPE_PACKAGE {
162164
packageDependency, ok := dependency.Value.(bundle_entities.PackageDependency)
163165
if !ok {
164-
log.Error("Failed to assert package dependency")
166+
log.Error("failed to assert package dependency")
165167
continue
166168
}
167169

168-
log.Info("Dependency Type: Package, Path: %s", packageDependency.Path)
169170
if asset, err := packager.FetchAsset(packageDependency.Path); err != nil {
170-
log.Error("Package %s not found", packageDependency.Path)
171+
log.Error("package not found", "path", packageDependency.Path)
171172
} else {
172-
log.Info("Package %s: %d bytes", packageDependency.Path, len(asset))
173+
log.Info("package dependency", "path", packageDependency.Path, "size", len(asset))
173174
}
174175
}
175176
}

cmd/commandline/bundle/encoder.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ func marshalYamlBytes(v any) []byte {
1313
encoder.SetIndent(2)
1414
err := encoder.Encode(v)
1515
if err != nil {
16-
log.Error("failed to marshal yaml: %s", err)
16+
log.Error("failed to marshal yaml", "error", err)
1717
return nil
1818
}
1919
return buf.Bytes()

cmd/commandline/bundle/init.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -55,20 +55,20 @@ func generateNewBundle() (*bundle_entities.Bundle, error) {
5555
func InitBundle() {
5656
bundle, err := generateNewBundle()
5757
if err != nil {
58-
log.Error("Failed to generate new bundle: %v", err)
58+
log.Error("failed to generate new bundle", "error", err)
5959
return
6060
}
6161

6262
// create bundle directory
6363
cwd, err := os.Getwd()
6464
if err != nil {
65-
log.Error("Error getting current directory: %v", err)
65+
log.Error("error getting current directory", "error", err)
6666
return
6767
}
6868

6969
bundleDir := path.Join(cwd, bundle.Name)
7070
if err := os.MkdirAll(bundleDir, 0755); err != nil {
71-
log.Error("Error creating bundle directory: %v", err)
71+
log.Error("error creating bundle directory", "error", err)
7272
return
7373
}
7474

@@ -82,7 +82,7 @@ func InitBundle() {
8282
// save
8383
bundleYaml := marshalYamlBytes(bundle)
8484
if err := os.WriteFile(path.Join(bundleDir, "manifest.yaml"), bundleYaml, 0644); err != nil {
85-
log.Error("Error saving manifest.yaml: %v", err)
85+
log.Error("error saving manifest.yaml", "error", err)
8686
return
8787
}
8888

@@ -95,34 +95,34 @@ func InitBundle() {
9595
"Version": bundle.Version,
9696
"Date": time.Now().Format(time.DateOnly),
9797
}); err != nil {
98-
log.Error("Error rendering README template: %v", err)
98+
log.Error("error rendering README template", "error", err)
9999
return
100100
}
101101

102102
// save README.md
103103
if err := os.WriteFile(path.Join(bundleDir, "README.md"), buf.Bytes(), 0644); err != nil {
104-
log.Error("Error saving README.md: %v", err)
104+
log.Error("error saving README.md", "error", err)
105105
return
106106
}
107107

108108
// create _assets directory
109109
if err := os.MkdirAll(path.Join(bundleDir, "_assets"), 0755); err != nil {
110-
log.Error("Error creating _assets directory: %v", err)
110+
log.Error("error creating _assets directory", "error", err)
111111
return
112112
}
113113

114114
// create _assets/icon.svg
115115
if err := os.WriteFile(path.Join(bundleDir, "_assets", "icon.svg"), BUNDLE_ICON, 0644); err != nil {
116-
log.Error("Error saving icon.svg: %v", err)
116+
log.Error("error saving icon.svg", "error", err)
117117
return
118118
}
119119
// create .github/workflows/plugin-publish.yml
120120
if err := os.MkdirAll(path.Join(bundleDir, ".github", "workflows"), 0755); err != nil {
121-
log.Error("Error creating .github/workflows directory: %v", err)
121+
log.Error("error creating .github/workflows directory", "error", err)
122122
return
123123
}
124124

125125
success = true
126126

127-
log.Info("Bundle created successfully: %s", bundleDir)
127+
log.Info("bundle created successfully", "directory", bundleDir)
128128
}

cmd/commandline/bundle/package.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,23 +9,23 @@ import (
99
func PackageBundle(bundlePath string, outputPath string) {
1010
packager, err := loadBundlePackager(bundlePath)
1111
if err != nil {
12-
log.Error("Failed to load bundle packager: %v", err)
12+
log.Error("failed to load bundle packager", "error", err)
1313
os.Exit(1)
1414
return
1515
}
1616

1717
zipFile, err := packager.Export()
1818
if err != nil {
19-
log.Error("Failed to export bundle: %v", err)
19+
log.Error("failed to export bundle", "error", err)
2020
os.Exit(1)
2121
return
2222
}
2323

2424
if err := os.WriteFile(outputPath, zipFile, 0644); err != nil {
25-
log.Error("Failed to write zip file: %v", err)
25+
log.Error("failed to write zip file", "error", err)
2626
os.Exit(1)
2727
return
2828
}
2929

30-
log.Info("Successfully packaged bundle")
30+
log.Info("successfully packaged bundle")
3131
}

cmd/commandline/plugin/checksum.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,32 +13,32 @@ func CalculateChecksum(pluginPath string) {
1313
if stat.IsDir() {
1414
pluginDecoder, err = decoder.NewFSPluginDecoder(pluginPath)
1515
if err != nil {
16-
log.Error("failed to create plugin decoder, plugin path: %s, error: %v", pluginPath, err)
16+
log.Error("failed to create plugin decoder", "plugin_path", pluginPath, "error", err)
1717
return
1818
}
1919
} else {
2020
bytes, err := os.ReadFile(pluginPath)
2121
if err != nil {
22-
log.Error("failed to read plugin file, plugin path: %s, error: %v", pluginPath, err)
22+
log.Error("failed to read plugin file", "plugin_path", pluginPath, "error", err)
2323
return
2424
}
2525

2626
pluginDecoder, err = decoder.NewZipPluginDecoder(bytes)
2727
if err != nil {
28-
log.Error("failed to create plugin decoder, plugin path: %s, error: %v", pluginPath, err)
28+
log.Error("failed to create plugin decoder", "plugin_path", pluginPath, "error", err)
2929
return
3030
}
3131
}
3232
} else {
33-
log.Error("failed to get plugin file info, plugin path: %s, error: %v", pluginPath, err)
33+
log.Error("failed to get plugin file info", "plugin_path", pluginPath, "error", err)
3434
return
3535
}
3636

3737
checksum, err := pluginDecoder.Checksum()
3838
if err != nil {
39-
log.Error("failed to calculate checksum, plugin path: %s, error: %v", pluginPath, err)
39+
log.Error("failed to calculate checksum", "plugin_path", pluginPath, "error", err)
4040
return
4141
}
4242

43-
log.Info("plugin checksum: %s", checksum)
43+
log.Info("plugin checksum", "checksum", checksum)
4444
}

0 commit comments

Comments
 (0)