| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- package logger
- import (
- "os"
- "path/filepath"
- "testing"
- "go.uber.org/zap"
- "go.uber.org/zap/zapcore"
- )
- func TestResolveLogFilePath_Default(t *testing.T) {
- t.Setenv("DATA_DIR", "")
- got := resolveLogFilePath("")
- if got != DefaultContainerLogPath {
- t.Fatalf("resolveLogFilePath() = %q, want %q", got, DefaultContainerLogPath)
- }
- }
- func TestResolveLogFilePath_WithDataDir(t *testing.T) {
- t.Setenv("DATA_DIR", "/tmp/sub2api-data")
- got := resolveLogFilePath("")
- want := filepath.Join("/tmp/sub2api-data", "logs", "sub2api.log")
- if got != want {
- t.Fatalf("resolveLogFilePath() = %q, want %q", got, want)
- }
- }
- func TestResolveLogFilePath_ExplicitPath(t *testing.T) {
- t.Setenv("DATA_DIR", "/tmp/ignore")
- got := resolveLogFilePath("/var/log/custom.log")
- if got != "/var/log/custom.log" {
- t.Fatalf("resolveLogFilePath() = %q, want explicit path", got)
- }
- }
- func TestNormalizedOptions_InvalidFallback(t *testing.T) {
- t.Setenv("DATA_DIR", "")
- opts := InitOptions{
- Level: "TRACE",
- Format: "TEXT",
- ServiceName: "",
- Environment: "",
- StacktraceLevel: "panic",
- Output: OutputOptions{
- ToStdout: false,
- ToFile: false,
- },
- Rotation: RotationOptions{
- MaxSizeMB: 0,
- MaxBackups: -1,
- MaxAgeDays: -1,
- },
- Sampling: SamplingOptions{
- Enabled: true,
- Initial: 0,
- Thereafter: 0,
- },
- }
- out := opts.normalized()
- if out.Level != "trace" {
- // normalized 仅做 trim/lower,不做校验;校验在 config 层。
- t.Fatalf("normalized level should preserve value for upstream validation, got %q", out.Level)
- }
- if !out.Output.ToStdout {
- t.Fatalf("normalized output should fallback to stdout")
- }
- if out.Output.FilePath != DefaultContainerLogPath {
- t.Fatalf("normalized file path = %q", out.Output.FilePath)
- }
- if out.Rotation.MaxSizeMB != 100 {
- t.Fatalf("normalized max_size_mb = %d", out.Rotation.MaxSizeMB)
- }
- if out.Rotation.MaxBackups != 10 {
- t.Fatalf("normalized max_backups = %d", out.Rotation.MaxBackups)
- }
- if out.Rotation.MaxAgeDays != 7 {
- t.Fatalf("normalized max_age_days = %d", out.Rotation.MaxAgeDays)
- }
- if out.Sampling.Initial != 100 || out.Sampling.Thereafter != 100 {
- t.Fatalf("normalized sampling defaults invalid: %+v", out.Sampling)
- }
- }
- func TestBuildFileCore_InvalidPathFallback(t *testing.T) {
- t.Setenv("DATA_DIR", "")
- opts := bootstrapOptions()
- opts.Output.ToFile = true
- opts.Output.FilePath = filepath.Join(os.DevNull, "logs", "sub2api.log")
- encoderCfg := zapcore.EncoderConfig{
- TimeKey: "time",
- LevelKey: "level",
- MessageKey: "msg",
- EncodeTime: zapcore.ISO8601TimeEncoder,
- EncodeLevel: zapcore.CapitalLevelEncoder,
- }
- encoder := zapcore.NewJSONEncoder(encoderCfg)
- _, _, err := buildFileCore(encoder, zap.NewAtomicLevel(), opts)
- if err == nil {
- t.Fatalf("buildFileCore() expected error for invalid path")
- }
- }
|