1 Star 0 Fork 0

jack/protoactor-go

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
config.go 2.18 KB
一键复制 编辑 原始数据 按行查看 历史
490689386@qq.com 提交于 2025-05-19 14:50 +08:00 . 初始化
package actor
import (
"fmt"
"github.com/lmittmann/tint"
"log/slog"
"net/http"
"os"
"time"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/exporters/prometheus"
"go.opentelemetry.io/otel/metric"
sdkmetric "go.opentelemetry.io/otel/sdk/metric"
"github.com/prometheus/client_golang/prometheus/promhttp"
)
type Config struct {
DeadLetterThrottleInterval time.Duration // throttle deadletter logging after this interval
DeadLetterThrottleCount int32 // throttle deadletter logging after this count
DeadLetterRequestLogging bool // do not log dead-letters with sender
DeveloperSupervisionLogging bool // console log and promote supervision logs to Warning level
DiagnosticsSerializer func(Actor) string // extract diagnostics from actor and return as string
MetricsProvider metric.MeterProvider
LoggerFactory func(system *ActorSystem) *slog.Logger
}
func defaultConfig() *Config {
return &Config{
MetricsProvider: nil,
DeadLetterThrottleInterval: 1 * time.Second,
DeadLetterThrottleCount: 3,
DeadLetterRequestLogging: true,
DeveloperSupervisionLogging: false,
DiagnosticsSerializer: func(actor Actor) string {
return ""
},
LoggerFactory: func(system *ActorSystem) *slog.Logger {
w := os.Stderr
// create a new logger
return slog.New(tint.NewHandler(w, &tint.Options{
Level: slog.LevelInfo,
TimeFormat: time.Kitchen,
})).With("lib", "Proto.Actor").
With("system", system.ID)
},
}
}
func defaultPrometheusProvider(port int) metric.MeterProvider {
exporter, err := prometheus.New()
if err != nil {
err = fmt.Errorf("failed to initialize prometheus exporter: %w", err)
//TODO: fix
//plog.Error(err.Error(), log.Error(err))
return nil
}
provider := sdkmetric.NewMeterProvider(sdkmetric.WithReader(exporter.Reader))
otel.SetMeterProvider(provider)
http.Handle("/", promhttp.Handler())
_port := fmt.Sprintf(":%d", port)
go func() {
_ = http.ListenAndServe(_port, nil)
}()
//TODO: fix
//plog.Debug(fmt.Sprintf("Prometheus server running on %s", _port))
return provider
}
func NewConfig() *Config {
return defaultConfig()
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/wujianhai/protoactor-go.git
git@gitee.com:wujianhai/protoactor-go.git
wujianhai
protoactor-go
protoactor-go
5633fe2499dd

搜索帮助