- Move build output from `./srs-proxy` to `bin/srs-proxy` following Go project conventions, updating Makefile, .gitignore, and all documentation references - Replace third-party `godotenv` dependency with a custom `.env` parser that supports comments, `export` prefix, quoted values, escape sequences, and inline comments — with full unit tests - Remove `ignore-worklog.md` and update `README.md` with skill-based AI prompts - Bump copyright year from 2025 to 2026 across all source files --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
44 lines
1.0 KiB
Go
44 lines
1.0 KiB
Go
// Copyright (c) 2026 Winlin
|
|
//
|
|
// SPDX-License-Identifier: MIT
|
|
package logger
|
|
|
|
import (
|
|
"context"
|
|
"crypto/rand"
|
|
"crypto/sha256"
|
|
"encoding/hex"
|
|
)
|
|
|
|
type key string
|
|
|
|
var cidKey key = "cid.srsx.ossrs.org"
|
|
|
|
// generateContextID generates a random context id in string.
|
|
func GenerateContextID() string {
|
|
randomBytes := make([]byte, 32)
|
|
_, _ = rand.Read(randomBytes)
|
|
hash := sha256.Sum256(randomBytes)
|
|
hashString := hex.EncodeToString(hash[:])
|
|
cid := hashString[:7]
|
|
return cid
|
|
}
|
|
|
|
// WithContext creates a new context with cid, which will be used for log.
|
|
func WithContext(ctx context.Context) context.Context {
|
|
return WithContextID(ctx, GenerateContextID())
|
|
}
|
|
|
|
// WithContextID creates a new context with cid, which will be used for log.
|
|
func WithContextID(ctx context.Context, cid string) context.Context {
|
|
return context.WithValue(ctx, cidKey, cid)
|
|
}
|
|
|
|
// ContextID returns the cid in context, or empty string if not set.
|
|
func ContextID(ctx context.Context) string {
|
|
if cid, ok := ctx.Value(cidKey).(string); ok {
|
|
return cid
|
|
}
|
|
return ""
|
|
}
|