本文整理汇总了Golang中github.com/go-kit/kit/log.NewStdlibAdapter函数的典型用法代码示例。如果您正苦于以下问题:Golang NewStdlibAdapter函数的具体用法?Golang NewStdlibAdapter怎么用?Golang NewStdlibAdapter使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NewStdlibAdapter函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: main
func main() {
// `package log` domain
var logger kitlog.Logger
logger = kitlog.NewLogfmtLogger(os.Stderr)
logger = kitlog.NewContext(logger).With("ts", kitlog.DefaultTimestampUTC)
stdlog.SetOutput(kitlog.NewStdlibAdapter(logger)) // redirect stdlib logging to us
stdlog.SetFlags(0) // flags are handled in our logger
// read configuration from environment
c, err := config.LoadConfiguration()
if err != nil {
logger.Log("fatal", err.Error())
return
}
// Mechanical stuff
rand.Seed(time.Now().UnixNano())
root := context.Background()
errc := make(chan error)
go func() {
errc <- interrupt()
}()
// Start bindings
binding.StartApplicationSQSConsumer(logger, root, errc, c)
binding.StartHealthCheckHTTPListener(logger, root, errc, c)
logger.Log("fatal", <-errc)
}
开发者ID:skidder,项目名称:streammarker-writer,代码行数:30,代码来源:writer.go
示例2: init
func init() {
termLog = log.NewLogfmtLogger(os.Stderr)
if term.IsTerminal(os.Stderr) {
termLog = term.NewLogger(
os.Stderr,
log.NewLogfmtLogger,
kithlp.NewLevelColorer("level", nil),
)
}
logBase.Swap(termLog)
lg := kithlp.StringifyLogger{logBase}
Logger = log.NewContext(lg).With("ts", log.DefaultTimestampUTC, "caller", log.Caller(4))
logger = levels.New(Logger)
stdlog.SetOutput(log.NewStdlibAdapter(logBase))
converter.Logger.Swap(Logger)
}
开发者ID:thanzen,项目名称:agostle,代码行数:17,代码来源:main.go
示例3: main
func main() {
var logger kitlog.Logger
logger = kitlog.NewLogfmtLogger(os.Stderr)
logger = kitlog.NewContext(logger).With("ts", kitlog.DefaultTimestampUTC)
stdlog.SetOutput(kitlog.NewStdlibAdapter(logger)) // redirect stdlib logging to us
stdlog.SetFlags(0) // flags are handled in our logger
debugAddr := ":8001"
httpAddr := ":8000"
root := context.Background()
// Our business and operational domain
var a Add = pureAdd
//a = authorize()(a)
// Server domain
var e endpoint.Endpoint
e = makeEndpoint(a)
e = authenticateMW()(e)
e = authorizeMW("user")(e)
errc := make(chan error)
go func() {
errc <- interrupt()
}()
// Transport: HTTP (debug/instrumentation)
go func() {
logger.Log("addr", debugAddr, "transport", "debug")
errc <- http.ListenAndServe(debugAddr, nil)
}()
// Transport: HTTP (JSON)
go func() {
ctx, cancel := context.WithCancel(root)
defer cancel()
before := []httptransport.BeforeFunc{authorizeBefore}
after := []httptransport.AfterFunc{}
handler := makeHTTPBinding(ctx, e, before, after)
logger.Log("addr", httpAddr, "transport", "HTTP/JSON")
errc <- http.ListenAndServe(httpAddr, handler)
}()
logger.Log("fatal", <-errc)
}
开发者ID:mwhooker,项目名称:gokit-test,代码行数:42,代码来源:main.go
示例4: init
func init() {
flag.StringVar(&port, "port", ":9494", "port to listen on")
flag.StringVar(&version, "version", "", "output build date and commit data")
flag.StringVar(&ramlFile, "ramlFile", "api.raml", "RAML file to parse")
if err := godotenv.Load(); err != nil {
log.Fatal("Error loading .env file")
}
serviceName = os.Getenv("SERVICE_NAME")
serviceRegistration = os.Getenv("SERVICE_REGISTRATION")
if serviceName == "" {
serviceName = filepath.Base(os.Args[0])
}
// Integrate go-kit logger.
logger = kitlog.NewJSONLogger(os.Stdout)
stdlog.SetOutput(kitlog.NewStdlibAdapter(logger))
}
开发者ID:buddhamagnet,项目名称:goberry,代码行数:20,代码来源:main.go
示例5: TestHystrix
func TestHystrix(t *testing.T) {
logger := kitlog.NewLogfmtLogger(os.Stderr)
stdlog.SetOutput(kitlog.NewStdlibAdapter(logger))
const (
commandName = "my-endpoint"
errorPercent = 5
maxConcurrent = 1000
)
hystrix.ConfigureCommand(commandName, hystrix.CommandConfig{
ErrorPercentThreshold: errorPercent,
MaxConcurrentRequests: maxConcurrent,
})
var (
breaker = circuitbreaker.Hystrix(commandName)
primeWith = hystrix.DefaultVolumeThreshold * 2
shouldPass = func(n int) bool { return (float64(n) / float64(primeWith+n)) <= (float64(errorPercent-1) / 100.0) }
openCircuitError = hystrix.ErrCircuitOpen.Error()
)
testFailingEndpoint(t, breaker, primeWith, shouldPass, openCircuitError)
}
开发者ID:cnicolov,项目名称:kit,代码行数:22,代码来源:hystrix_test.go
示例6: SetLogger
// SetLogger allows user to output log data to a writer.
func SetLogger(w io.Writer) {
logger = kitlog.NewJSONLogger(w)
stdlog.SetOutput(kitlog.NewStdlibAdapter(logger))
}
开发者ID:EconomistDigitalSolutions,项目名称:watchman,代码行数:5,代码来源:journal.go
示例7: init
func init() {
logger = kitlog.NewJSONLogger(os.Stdout)
stdlog.SetOutput(kitlog.NewStdlibAdapter(logger))
}
开发者ID:EconomistDigitalSolutions,项目名称:watchman,代码行数:4,代码来源:journal.go
示例8: init
func init() {
Logger = log.NewLogfmtLogger(os.Stderr)
Logger = log.NewContext(Logger).With("ts", log.DefaultTimestampUTC).With("caller", log.DefaultCaller)
stdlog.SetFlags(0) // flags are handled by Go kit's logger
stdlog.SetOutput(log.NewStdlibAdapter(Logger))
}
开发者ID:anarcher,项目名称:glia,代码行数:6,代码来源:log.go
示例9: BenchmarkInfo_KitLevels
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package leveledLogger
import (
"bytes"
"testing"
"github.com/go-kit/kit/log"
"github.com/go-kit/kit/log/levels"
)
var (
adapter = log.NewStdlibAdapter(log.NewNopLogger(),
log.TimestampKey(""), log.FileKey(""), log.MessageKey(""),
)
baseLogger = log.NewLogfmtLogger(adapter)
kitleveler = levels.New(baseLogger)
)
func BenchmarkInfo_KitLevels(b *testing.B) {
for i := 0; i < b.N; i++ {
kitleveler.Info().Log(
"key1", "first value is main message string",
"key2", "file:line",
"key3", "timestamp",
"key4", "fake error string in case an error occurred",
)
}
}
开发者ID:seastar-io,项目名称:leveledLogger,代码行数:31,代码来源:compare_test.go
示例10: main
func main() {
// Flag domain. Note that gRPC transitively registers flags via its import
// of glog. So, we define a new flag set, to keep those domains distinct.
fs := flag.NewFlagSet("", flag.ExitOnError)
var (
debugAddr = fs.String("debug.addr", ":8000", "Address for HTTP debug/instrumentation server")
httpAddr = fs.String("http.addr", ":8001", "Address for HTTP (JSON) server")
netrpcAddr = fs.String("netrpc.addr", ":8003", "Address for net/rpc server")
proxyHTTPAddr = fs.String("proxy.http.url", "", "if set, proxy requests over HTTP to this addsvc")
zipkinServiceName = fs.String("zipkin.service.name", "addsvc", "Zipkin service name")
zipkinCollectorAddr = fs.String("zipkin.collector.addr", "", "Zipkin Scribe collector address (empty will log spans)")
zipkinCollectorTimeout = fs.Duration("zipkin.collector.timeout", time.Second, "Zipkin collector timeout")
zipkinCollectorBatchSize = fs.Int("zipkin.collector.batch.size", 100, "Zipkin collector batch size")
zipkinCollectorBatchInterval = fs.Duration("zipkin.collector.batch.interval", time.Second, "Zipkin collector batch interval")
)
flag.Usage = fs.Usage // only show our flags
fs.Parse(os.Args[1:])
// `package log` domain
var logger kitlog.Logger
logger = kitlog.NewLogfmtLogger(os.Stderr)
logger = kitlog.NewContext(logger).With("ts", kitlog.DefaultTimestampUTC)
stdlog.SetOutput(kitlog.NewStdlibAdapter(logger)) // redirect stdlib logging to us
stdlog.SetFlags(0) // flags are handled in our logger
// `package metrics` domain
requests := metrics.NewMultiCounter(
expvar.NewCounter("requests"),
statsd.NewCounter(ioutil.Discard, "requests_total", time.Second),
prometheus.NewCounter(stdprometheus.CounterOpts{
Namespace: "addsvc",
Subsystem: "add",
Name: "requests_total",
Help: "Total number of received requests.",
}, []string{}),
)
duration := metrics.NewTimeHistogram(time.Nanosecond, metrics.NewMultiHistogram(
expvar.NewHistogram("duration_nanoseconds_total", 0, 1e9, 3, 50, 95, 99),
statsd.NewHistogram(ioutil.Discard, "duration_nanoseconds_total", time.Second),
prometheus.NewSummary(stdprometheus.SummaryOpts{
Namespace: "addsvc",
Subsystem: "add",
Name: "duration_nanoseconds_total",
Help: "Total nanoseconds spend serving requests.",
}, []string{}),
))
_, _ = requests, duration
// `package tracing` domain
zipkinHostPort := "localhost:1234" // TODO Zipkin makes overly simple assumptions about services
var zipkinCollector zipkin.Collector = loggingCollector{logger}
if *zipkinCollectorAddr != "" {
var err error
if zipkinCollector, err = zipkin.NewScribeCollector(
*zipkinCollectorAddr,
*zipkinCollectorTimeout,
zipkin.ScribeBatchSize(*zipkinCollectorBatchSize),
zipkin.ScribeBatchInterval(*zipkinCollectorBatchInterval),
zipkin.ScribeLogger(logger),
); err != nil {
logger.Log("err", err)
os.Exit(1)
}
}
zipkinMethodName := "add"
zipkinSpanFunc := zipkin.MakeNewSpanFunc(zipkinHostPort, *zipkinServiceName, zipkinMethodName)
// Our business and operational domain
var a add.Adder = pureAdd{}
if *proxyHTTPAddr != "" {
var e endpoint.Endpoint
e = add.NewAdderAddHTTPClient("GET", *proxyHTTPAddr, zipkin.ToRequest(zipkinSpanFunc))
e = zipkin.AnnotateClient(zipkinSpanFunc, zipkinCollector)(e)
a = add.MakeAdderClient(func(method string) endpoint.Endpoint {
if method != "Add" {
panic(fmt.Errorf("unknown method %s", method))
}
return e
})
}
// This could happen at endpoint level.
// a = logging(logger)(a)
// a = instrument(requests, duration)(a)
// Server domain
var e endpoint.Endpoint
e = add.MakeAdderEndpoints(a).Add
e = zipkin.AnnotateServer(zipkinSpanFunc, zipkinCollector)(e)
// Mechanical stuff
rand.Seed(time.Now().UnixNano())
root := context.Background()
errc := make(chan error)
go func() {
errc <- interrupt()
}()
//.........这里部分代码省略.........
开发者ID:sasha-s,项目名称:kit,代码行数:101,代码来源:main.go
示例11: main
func main() {
flag.Parse()
// package log
var logger log.Logger
{
logger = log.NewLogfmtLogger(os.Stderr)
logger = log.NewContext(logger).With("ts", log.DefaultTimestampUTC).With("caller", log.DefaultCaller)
stdlog.SetFlags(0) // flags are handled by Go kit's logger
stdlog.SetOutput(log.NewStdlibAdapter(logger)) // redirect anything using stdlib log to us
}
// package metrics
var (
requestCount metrics.Counter
requestLatency metrics.TimeHistogram
)
{
fieldKeys := []string{"method", "error"}
requestCount = kitprometheus.NewCounter(stdprometheus.CounterOpts{
Namespace: "gmuch",
Subsystem: "api",
Name: "request_count",
Help: "Number of requests received.",
}, fieldKeys)
requestLatency = metrics.NewTimeHistogram(time.Nanosecond, metrics.NewMultiHistogram(
expvar.NewHistogram("request_duration_ns", 0, 5e9, 1, 50, 95, 99),
kitprometheus.NewSummary(stdprometheus.SummaryOpts{
Namespace: "gmuch",
Subsystem: "api",
Name: "duration_ns",
Help: "Request duration in nanoseconds.",
}, fieldKeys),
))
}
// Business domain
var g server.GmuchService
{
g = gmuch.New(*dbPath, logger)
g = server.LoggingMiddleware(logger)(g)
g = server.InstrumentingMiddleware(requestCount, requestLatency)(g)
}
// Mechanical stuff
rand.Seed(time.Now().UnixNano())
root := context.Background()
errc := make(chan error)
go func() {
errc <- interrupt()
}()
// Debug/instrumentation
go func() {
transportLogger := log.NewContext(logger).With("transport", "debug")
_ = transportLogger.Log("addr", *debugAddr)
errc <- http.ListenAndServe(*debugAddr, nil) // DefaultServeMux
}()
// Transport: HTTP/JSON
go func() {
transportLogger := log.NewContext(logger).With("transport", "HTTP/JSON")
mux := http.NewServeMux()
mux.Handle("/query", httptransport.NewServer(
root,
shttp.EndpointenizeQuery(g),
shttp.DecodeQueryRequest,
shttp.EncodeQueryResponse,
httptransport.ServerErrorLogger(transportLogger),
))
mux.Handle("/thread", httptransport.NewServer(
root,
shttp.EndpointenizeThread(g),
shttp.DecodeThreadRequest,
shttp.EncodeThreadResponse,
httptransport.ServerErrorLogger(transportLogger),
))
_ = transportLogger.Log("addr", *httpAddr)
errc <- http.ListenAndServe(*httpAddr, mux)
}()
// Transport: gRPC
go func() {
transportLogger := log.NewContext(logger).With("transport", "gRPC")
ln, err := net.Listen("tcp", *grpcAddr)
if err != nil {
errc <- err
return
}
s := grpc.NewServer() // uses its own, internal context
sgrpc.RegisterGmuchServer(s, sgrpc.Binding{g})
_ = transportLogger.Log("addr", *grpcAddr)
errc <- s.Serve(ln)
}()
_ = logger.Log("fatal", <-errc)
}
开发者ID:gmuch,项目名称:gmuch,代码行数:100,代码来源:main.go
示例12: main
func main() {
var (
httpAddr = flag.String("http.addr", ":8000", "Address for HTTP (JSON) server")
consulAddr = flag.String("consul.addr", "", "Consul agent address")
retryMax = flag.Int("retry.max", 3, "per-request retries to different instances")
retryTimeout = flag.Duration("retry.timeout", 500*time.Millisecond, "per-request timeout, including retries")
)
flag.Parse()
// Log domain
logger := log.NewLogfmtLogger(os.Stderr)
logger = log.NewContext(logger).With("ts", log.DefaultTimestampUTC).With("caller", log.DefaultCaller)
stdlog.SetFlags(0) // flags are handled by Go kit's logger
stdlog.SetOutput(log.NewStdlibAdapter(logger)) // redirect anything using stdlib log to us
// Service discovery domain. In this example we use Consul.
consulConfig := api.DefaultConfig()
if len(*consulAddr) > 0 {
consulConfig.Address = *consulAddr
}
consulClient, err := api.NewClient(consulConfig)
if err != nil {
logger.Log("err", err)
os.Exit(1)
}
discoveryClient := consul.NewClient(consulClient)
// Context domain.
ctx := context.Background()
// Set up our routes.
//
// Each Consul service name maps to multiple instances of that service. We
// connect to each instance according to its pre-determined transport: in this
// case, we choose to access addsvc via its gRPC client, and stringsvc over
// plain transport/http (it has no client package).
//
// Each service instance implements multiple methods, and we want to map each
// method to a unique path on the API gateway. So, we define that path and its
// corresponding factory function, which takes an instance string and returns an
// endpoint.Endpoint for the specific method.
//
// Finally, we mount that path + endpoint handler into the router.
r := mux.NewRouter()
for consulName, methods := range map[string][]struct {
path string
factory loadbalancer.Factory
}{
"addsvc": {
{path: "/api/addsvc/concat", factory: grpc.MakeConcatEndpointFactory(opentracing.GlobalTracer(), nil)},
{path: "/api/addsvc/sum", factory: grpc.MakeSumEndpointFactory(opentracing.GlobalTracer(), nil)},
},
"stringsvc": {
{path: "/api/stringsvc/uppercase", factory: httpFactory(ctx, "GET", "uppercase/")},
{path: "/api/stringsvc/concat", factory: httpFactory(ctx, "GET", "concat/")},
},
} {
for _, method := range methods {
publisher, err := consul.NewPublisher(discoveryClient, method.factory, logger, consulName)
if err != nil {
logger.Log("service", consulName, "path", method.path, "err", err)
continue
}
lb := loadbalancer.NewRoundRobin(publisher)
e := loadbalancer.Retry(*retryMax, *retryTimeout, lb)
h := makeHandler(ctx, e, logger)
r.HandleFunc(method.path, h)
}
}
// Mechanical stuff.
errc := make(chan error)
go func() {
errc <- interrupt()
}()
go func() {
logger.Log("transport", "http", "addr", *httpAddr)
errc <- http.ListenAndServe(*httpAddr, r)
}()
logger.Log("err", <-errc)
}
开发者ID:xiejianzheng,项目名称:goddd,代码行数:81,代码来源:main.go
示例13: main
func main() {
fs := flag.NewFlagSet("", flag.ExitOnError)
var (
debugAddr = fs.String("debug.addr", ":8000", "Address for HTTP debug/instrumentation server")
httpAddr = fs.String("http.addr", ":8001", "Address for HTTP (JSON) server")
)
flag.Usage = fs.Usage // only show our flags
if err := fs.Parse(os.Args[1:]); err != nil {
fmt.Fprintf(os.Stderr, "%v", err)
os.Exit(1)
}
// package log
var logger log.Logger
{
logger = log.NewLogfmtLogger(os.Stderr)
logger = log.NewContext(logger).With("ts", log.DefaultTimestampUTC).With("caller", log.DefaultCaller)
stdlog.SetFlags(0) // flags are handled by Go kit's logger
stdlog.SetOutput(log.NewStdlibAdapter(logger)) // redirect anything using stdlib log to us
}
// package metrics
var requestDuration metrics.TimeHistogram
{
requestDuration = metrics.NewTimeHistogram(time.Nanosecond, metrics.NewMultiHistogram(
expvar.NewHistogram("request_duration_ns", 0, 5e9, 1, 50, 95, 99),
prometheus.NewSummary(stdprometheus.SummaryOpts{
Namespace: "myorg",
Subsystem: "addsvc",
Name: "duration_ns",
Help: "Request duration in nanoseconds.",
}, []string{"method"}),
))
}
// Business domain
var svc server.InfoService
{
svc = pureInfoService{}
svc = loggingMiddleware{svc, logger}
svc = instrumentingMiddleware{svc, requestDuration}
}
// Mechanical stuff
rand.Seed(time.Now().UnixNano())
root := context.Background()
errc := make(chan error)
go func() {
errc <- interrupt()
}()
// Debug/instrumentation
go func() {
transportLogger := log.NewContext(logger).With("transport", "debug")
_ = transportLogger.Log("addr", *debugAddr)
errc <- http.ListenAndServe(*debugAddr, nil) // DefaultServeMux
}()
// Transport: HTTP/JSON
go func() {
var (
transportLogger = log.NewContext(logger).With("transport", "HTTP/JSON")
mux = http.NewServeMux()
hello, host endpoint.Endpoint
)
hello = makeHelloEndpoint(svc)
mux.Handle("/hello", httptransport.NewServer(
root,
hello,
server.DecodeHelloRequest,
server.EncodeHelloResponse,
httptransport.ServerErrorLogger(transportLogger),
))
host = makeHostEndpoint(svc)
mux.Handle("/host", httptransport.NewServer(
root,
host,
server.DecodeHostRequest,
server.EncodeHostResponse,
httptransport.ServerErrorLogger(transportLogger),
))
_ = transportLogger.Log("addr", *httpAddr)
errc <- http.ListenAndServe(*httpAddr, mux)
}()
_ = logger.Log("fatal", <-errc)
}
开发者ID:pinterb,项目名称:infosvc,代码行数:92,代码来源:main.go
示例14: main
func main() {
// Flag domain
fs := flag.NewFlagSet("", flag.ExitOnError)
httpAddr := fs.String("http.addr", ":8000", "Address for HTTP (JSON) server")
debugAddr := fs.String("debug.addr", ":8001", "Address for HTTP debug/instrumentation server")
flag.Usage = fs.Usage // only show our flags
fs.Parse(os.Args[1:])
// `package log` domain
var logger kitlog.Logger
logger = kitlog.NewLogfmtLogger(os.Stderr)
logger = kitlog.NewContext(logger).With("ts", kitlog.DefaultTimestampUTC)
stdlog.SetOutput(kitlog.NewStdlibAdapter(logger)) // redirect stdlib logging to us
stdlog.SetFlags(0) // flags are handled in our logger
// `package metrics` domain
total := metrics.NewMultiCounter(
statsd.NewCounter(ioutil.Discard, "requests_total", time.Second),
)
duration := metrics.NewTimeHistogram(time.Nanosecond, metrics.NewMultiHistogram(
statsd.NewHistogram(ioutil.Discard, "duration_nanoseconds_total", time.Second),
))
instruments := instrumentation{logger: logger, total: total, duration: duration}
// Dependencies and services
dependencies := &deps.All{
EntityService: &services.EntityService{},
}
// RPCs
var createEntity rpc.CreateEntity = rpc.NewCreateEntity(dependencies)
// Mechanical stuff
rand.Seed(time.Now().UnixNano())
root := context.Background()
errc := make(chan error)
go func() {
errc <- interrupt()
}()
// Transport: HTTP (JSON)
go func() {
ctx, cancel := context.WithCancel(root)
defer cancel()
router := mux.NewRouter()
router.HandleFunc("/entity", func(w http.ResponseWriter, r *http.Request) {
var incoming rpc.CreateEntityRequest
httpJsonBodyEndpoint(w, r, &incoming, &instruments, func() (interface{}, error) {
return createEntity(ctx, &incoming)
})
}).Methods("POST")
logger.Log("addr", *httpAddr, "transport", "HTTP/JSON")
errc <- http.ListenAndServe(*httpAddr, router)
}()
// Transport: HTTP (debug/instrumentation)
go func() {
logger.Log("addr", *debugAddr, "transport", "debug")
errc <- http.ListenAndServe(*debugAddr, http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if r.URL.Path == "/health" {
io.WriteString(w, "OK ;-)\n")
} else {
w.WriteHeader(http.StatusNotFound)
io.WriteString(w, "404 not found\n")
}
}))
}()
logger.Log("fatal", <-errc)
}
开发者ID:robskillington,项目名称:gokit-gorilla-mux-starter,代码行数:77,代码来源:main.go
示例15: main
func main() {
stdlog.SetOutput(log.NewStdlibAdapter(logger))
var (
conf = config{
CookieJarPath: "fronius.cookies",
BaseURL: "https://www.solarweb.com",
LogonURL: "{{BASE}}/Account/GuestLogOn?pvSystemId={{pvSystemID}}",
DataURL: "{{BASE}}/NewCharts/GetDetailData/{{pvSystemID}}/00000000-0000-0000-0000-000000000000/Day/{{2006/1/2}}",
}
)
dumpCmd := &cobra.Command{
Use: "dump",
Short: "dump data points from the given days (today is the default)",
Run: func(_ *cobra.Command, args []string) {
for data := range conf.dumpFromArgs(args) {
for k, points := range data {
for _, p := range points {
fmt.Fprintf(os.Stdout, "%q;%q;%.3f\n", k, p.Time, p.Energy)
}
}
}
},
}
var (
influxDB = "http://localhost:8086"
database = "fronius"
retentionPolicy = "default"
servePath = "/solarapi/v1/current/"
)
serveCmd := &cobra.Command{
Use: "serve",
Short: "accept push from the fronius datalogger",
Run: func(_ *cobra.Command, args []string) {
con, err := newInfluxClient(influxDB, database, retentionPolicy)
if err != nil {
Log.Crit().Log("msg", "influx connection", "error", err)
os.Exit(1)
}
http.Handle(servePath, solarAPIAccept{con})
addr := ":15015"
if len(args) > 0 {
addr = args[0]
}
Log.Info().Log("msg", "Start listening", "address", addr, "path", servePath)
http.ListenAndServe(addr, nil)
},
}
f := serveCmd.Flags()
f.StringVar(&servePath, "serve.path", servePath, "HTTP endpoint to publish")
f.StringVar(&influxDB, "server", influxDB, "influx server to connect to")
f.StringVar(&database, "database", database, "influx database to insert data into")
f.StringVar(&retentionPolicy, "retention", retentionPolicy, "retention policy to use")
mainCmd := &cobra.Command{
Use: "fronius",
Run: func(_ *cobra.Command, args []string) {
dumpCmd.Run(dumpCmd, args)
},
}
mainCmd.AddCommand(dumpCmd, serveCmd)
pflags := mainCmd.PersistentFlags()
pflags.StringVar(&conf.CookieJarPath, "cookiejar", conf.CookieJarPath, "path to the cookie storage file")
pflags.StringVar(&conf.BaseURL, "base", conf.BaseURL, "Solar.Web's base URL")
pflags.StringVar(&conf.LogonURL, "logon", conf.LogonURL, "Logon URL")
pflags.StringVar(&conf.DataURL, "data", conf.DataURL,
"URL of the detail data; the Go reference date (2006-01-02) will be replaced with the current date, in the given format.")
influxCmd := &cobra.Command{
Use: "influx",
Short: "insert data into the InfluxDB specified with the --server flag",
Run: func(_ *cobra.Command, args []string) {
ic, err := newInfluxClient(influxDB, database, retentionPolicy)
if err != nil {
Log.Crit().Log("msg", "influx connection", "error", err)
os.Exit(1)
}
points := make([]dataPoint, 0, 512)
for data := range conf.dumpFromArgs(args) {
for k, dps := range data {
for _, p := range dps {
points = append(points,
dataPoint{Name: k, Value: p.Energy, Time: p.Time, Unit: "kWh"})
}
}
}
if err := ic.Put("fronius energy", points...); err != nil {
Log.Error().Log("msg", "write batch to db", "error", err)
os.Exit(2)
}
},
}
f = influxCmd.Flags()
f.StringVar(&influxDB, "server", influxDB, "influx server to connect to")
f.StringVar(&database, "database", database, "influx database to insert data into")
f.StringVar(&retentionPolicy, "retention", retentionPolicy, "retention policy to use")
//.........这里部分代码省略.........
开发者ID:tgulacsi,项目名称:fronius,代码行数:101,代码来源:main.go
示例16: main
func main() {
// Flag domain. Note that gRPC transitively registers flags via its import
// of glog. So, we define a new flag set, to keep those domains distinct.
fs := flag.NewFlagSet("", flag.ExitOnError)
var (
debugAddr = fs.String("debug.addr", ":8000", "Address for HTTP debug/instrumentation server")
httpAddr = fs.String("http.addr", ":8001", "Address for HTTP (JSON) server")
grpcAddr = fs.String("grpc.addr", ":8002", "Address for gRPC server")
netrpcAddr = fs.String("netrpc.addr", ":8003", "Address for net/rpc server")
thriftAddr = fs.String("thrift.addr", ":8004", "Address for Thrift server")
thriftProtocol = fs.String("thrift.protocol", "binary", "binary, compact, json, simplejson")
thriftBufferSize = fs.Int("thrift.buffer.size", 0, "0 for unbuffered")
thriftFramed = fs.Bool("thrift.framed", false, "true to enable framing")
// Supported OpenTracing backends
zipkinAddr = fs.String("zipkin.kafka.addr", "", "Enable Zipkin tracing via a Kafka server host:port")
appdashAddr = fs.String("appdash.addr", "", "Enable Appdash tracing via an Appdash server host:port")
lightstepAccessToken = fs.String("lightstep.token", "", "Enable LightStep tracing via a LightStep access token")
)
flag.Usage = fs.Usage // only show our flags
if err := fs.Parse(os.Args[1:]); err != nil {
fmt.Fprintf(os.Stderr, "%v", err)
os.Exit(1)
}
// package log
var logger log.Logger
{
logger = log.NewLogfmtLogger(os.Stderr)
logger = log.NewContext(logger).With("ts", log.DefaultTimestampUTC).With("caller", log.DefaultCaller)
stdlog.SetFlags(0) // flags are handled by Go kit's logger
stdlog.SetOutput(log.NewStdlibAdapter(logger)) // redirect anything using stdlib log to us
}
// package metrics
var requestDuration metrics.TimeHistogram
{
requestDuration = metrics.NewTimeHistogram(time.Nanosecond, metrics.NewMultiHistogram(
"request_duration_ns",
expvar.NewHistogram("request_duration_ns", 0, 5e9, 1, 50, 95, 99),
prometheus.NewSummary(stdprometheus.SummaryOpts{
Namespace: "myorg",
Subsystem: "addsvc",
Name: "duration_ns",
Help: "Request duration in nanoseconds.",
}, []string{"method"}),
))
}
// Set up OpenTracing
var tracer opentracing.Tracer
{
switch {
case *appdashAddr != "" && *lightstepAccessToken == "" && *zipkinAddr == "":
tracer = appdashot.NewTracer(appdash.NewRemoteCollector(*appdashAddr))
case *appdashAddr == "" && *lightstepAccessToken != "" && *zipkinAddr == "":
tracer = lightstep.NewTracer(lightstep.Options{
AccessToken: *lightstepAccessToken,
})
defer lightstep.FlushLightStepTracer(tracer)
case *appdashAddr == "" && *lightstepAccessToken == "" && *zipkinAddr != "":
collector, err := zipkin.NewKafkaCollector(
strings.Split(*zipkinAddr, ","),
zipkin.KafkaLogger(logger),
)
if err != nil {
logger.Log("err", "unable to create collector", "fatal", err)
os.Exit(1)
}
tracer, err = zipkin.NewTracer(
zipkin.NewRecorder(collector, false, "localhost:80", "addsvc"),
)
if err != nil {
logger.Log("err", "unable to create zipkin tracer", "fatal", err)
os.Exit(1)
}
case *appdashAddr == "" && *lightstepAccessToken == "" && *zipkinAddr == "":
tracer = opentracing.GlobalTracer() // no-op
default:
logger.Log("fatal", "specify a single -appdash.addr, -lightstep.access.token or -zipkin.kafka.addr")
os.Exit(1)
}
}
// Business domain
var svc server.AddService
{
svc = pureAddService{}
svc = loggingMiddleware{svc, logger}
svc = instrumentingMiddleware{svc, requestDuration}
}
// Mechanical stuff
rand.Seed(time.Now().UnixNano())
root := context.Background()
errc := make(chan error)
go func() {
errc <- interrupt()
}()
//.........这里部分代码省略.........
开发者ID:zyanho,项目名称:kit,代码行数:101,代码来源:main.go
示例17: main
func main() {
// Flag domain. Note that gRPC transitively registers flags via its import
// of glog. So, we define a new flag set, to keep those domains distinct.
fs := flag.NewFlagSet("", flag.ExitOnError)
var (
debugAddr = fs.String("debug.addr", ":8000", "Address for HTTP debug/instrumentation server")
httpAddr = fs.String("http.addr", ":8001", "Address for HTTP (JSON) server")
grpcAddr = fs.String("grpc.addr", ":8002", "Address for gRPC server")
netrpcAddr = fs.String("netrpc.addr", ":8003", "Address for net/rpc server")
thriftAddr = fs.String("thrift.addr", ":8004", "Address for Thrift server")
thriftProtocol = fs.String("thrift.protocol", "binary", "binary, compact, json, simplejson")
thriftBufferSize = fs.Int("thrift.buffer.size", 0, "0 for unbuffered")
thriftFramed = fs.Bool("thrift.framed", false, "true to enable framing")
zipkinHostPort = fs.String("zipkin.host.port", "my.service.domain:12345", "Zipkin host:port")
zipkinServiceName = fs.String("zipkin.service.name", "addsvc", "Zipkin service name")
zipkinCollectorAddr = fs.String("zipkin.collector.addr", "", "Zipkin Scribe collector address (empty will log spans)")
zipkinCollectorTimeout = fs.Duration("zipkin.collector.timeout", time.Second, "Zipkin collector timeout")
zipkinCollectorBatchSize = fs.Int("zipkin.collector.batch.size", 100, "Zipkin collector batch size")
zipkinCollectorBatchInterval = fs.Duration("zipkin.collector.batch.interval", time.Second, "Zipkin collector batch interval")
)
flag.Usage = fs.Usage // only show our flags
if err := fs.Parse(os.Args[1:]); err != nil {
fmt.Fprintf(os.Stderr, "%v", err)
os.Exit(1)
}
// package log
var logger log.Logger
{
logger = log.NewLogfmtLogger(os.Stderr)
logger = log.NewContext(logger).With("ts", log.DefaultTimestampUTC).With("caller", log.DefaultCaller)
stdlog.SetFlags(0) // flags are handled by Go kit's logger
stdlog.SetOutput(log.NewStdlibAdapter(logger)) // redirect anything using stdlib log to us
}
// package metrics
var requestDuration metrics.TimeHistogram
{
requestDuration = metrics.NewTimeHistogram(time.Nanosecond, metrics.NewMultiHistogram(
expvar.NewHistogram("request_duration_ns", 0, 5e9, 1, 50, 95, 99),
prometheus.NewSummary(stdprometheus.SummaryOpts{
Namespace: "myorg",
Subsystem: "addsvc",
Name: "duration_ns",
Help: "Request duration in nanoseconds.",
}, []string{"method"}),
))
}
// package tracing
var collector zipkin.Collector
{
zipkinLogger := log.NewContext(logger).With("component", "zipkin")
collector = loggingCollector{zipkinLogger} // TODO(pb)
if *zipkinCollectorAddr != "" {
var err error
if collector, err = zipkin.NewScribeCollector(
*zipkinCollectorAddr,
*zipkinCollectorTimeout,
zipkin.ScribeBatchSize(*zipkinCollectorBatchSize),
zipkin.ScribeBatchInterval(*zipkinCollectorBatchInterval),
zipkin.ScribeLogger(zipkinLogger),
); err != nil {
zipkinLogger.Log("err", err)
os.Exit(1)
}
}
}
// Business domain
var svc server.AddService
{
svc = pureAddService{}
svc = loggingMiddleware{svc, logger}
svc = instrumentingMiddleware{svc, requestDuration}
}
// Mechanical stuff
rand.Seed(time.Now().UnixNano())
root := context.Background()
errc := make(chan error)
go func() {
errc <- interrupt()
}()
// Debug/instrumentation
go func() {
transportLogger := log.NewContext(logger).With("transport", "debug")
transportLogger.Log("addr", *debugAddr)
errc <- http.ListenAndServe(*debugAddr, nil) // DefaultServeMux
}()
// Transport: HTTP/JSON
go func() {
var (
transportLogger = log.NewContext(logger).With("transport", "HTTP/JSON")
tracingLogger = log.NewContext(transportLogger).With("component", "tracing")
newSumSpan = zipkin.MakeNewSpanFunc(*zipkinHostPort, *zipkinServiceName, "sum")
newConcatSpan = zipkin.MakeNewSpanFunc(*zipkinHostPort, *zipkinServiceName, "concat")
//.........这里部分代码省略.........
开发者ID:simonjefford,项目名称:kit,代码行数:101,代码来源:main.go
示例18: main
func main() {
// Flag domain. Note that gRPC transitively registers flags via its import
// of glog. So, we define a new flag set, to keep those domains distinct.
fs := flag.NewFlagSet("", flag.ExitOnError)
var (
debugAddr = fs.String("debug.addr", ":8000", "Address for HTTP debug/instrumentation server")
httpAddr = fs.String("http.addr", ":8001", "Address for HTTP (JSON) server")
grpcAddr = fs.String("grpc.addr", ":8002", "Address for gRPC server")
netrpcAddr = fs.String("netrpc.addr", ":8003", "Address for net/rpc server")
thriftAddr = fs.String("thrift.addr", ":8004", "Address for Thrift server")
thriftProtocol = fs.String("thrift.protocol", "binary", "binary, compact, json, simplejson")
thriftBufferSize = fs.Int("thrift.buffer.size", 0, "0 for unbuffered")
thriftFramed = fs.Bool("thrift.framed", false, "true to enable framing")
proxyHTTPAddr = fs.String("proxy.http.url", "", "if set, proxy requests over HTTP to this addsvc")
zipkinServiceName = fs.String("zipkin.service.name", "addsvc", "Zipkin service name")
zipkinCollectorAddr = fs.String("zipkin.collector.addr", "", "Zipkin Scribe collector address (empty will log spans)")
zipkinCollectorTimeout = fs.Duration("zipkin.collector.timeout", time.Second, "Zipkin collector timeout")
zipkinCollectorBatchSize = fs.Int("zipkin.collector.batch.size", 100, "Zipkin collector batch size")
zipkinCollectorBatchInterval = fs.Duration("zipkin.collector.batch.interval", time.Second, "Zipkin collector batch interval")
)
flag.Usage = fs.Usage // only show our flags
fs.Parse(os.Args[1:])
// `package log` domain
var logger kitlog.Logger
logger = kitlog.NewLogfmtLogger(os.Stderr)
logger = kitlog.With(logger, "ts", kitlog.DefaultTimestampUTC)
stdlog.SetOutput(kitlog.NewStdlibAdapter(logger)) // redirect stdlib logging to us
stdlog.SetFlags(0) // flags are handled in our logger
// `package metrics` domain
requests := metrics.NewMultiCounter(
expvar.NewCounter("requests"),
statsd.NewCounter(ioutil.Discard, "requests_total", time.Second),
prometheus.NewCounter(stdprometheus.CounterOpts{
Namespace: "addsvc",
Subsystem: "add",
Name: "requests_total",
Help: "Total number of received requests.",
}, []string{}),
)
duration := metrics.NewTimeHistogram(time.Nanosecond, metrics.NewMultiHistogram(
expvar.NewHistogram("duration_nanoseconds_total", 0, 1e9, 3, 50, 95, 99),
statsd.NewHistogram(ioutil.Discard, "duration_nanoseconds_total", time.Second),
prometheus.NewSummary(stdprometheus.SummaryOpts{
Namespace: "addsvc",
Subsystem: "add",
Name: "duration_nanoseconds_total",
Help: "Total nanoseconds spend serving requests.",
}, []string{}),
))
// `package tracing` domain
zipkinHostPort := "localhost:1234" // TODO Zipkin makes overly simple assumptions about services
var zipkinCollector zipkin.Collector = loggingCollector{logger}
if *zipkinCollectorAddr != "" {
var err error
if zipkinCollector, err = zipkin.NewScribeCollector(
*zipkinCollectorAddr,
*zipkinCollectorTimeout,
*zipkinCollectorBatchSize,
*zipkinCollectorBatchInterval,
); err != nil {
logger.Log("err", err)
os.Exit(1)
}
}
zipkinMethodName := "add"
zipkinSpanFunc := zipkin.MakeNewSpanFunc(zipkinHostPort, *zipkinServiceName, zipkinMethodName)
zipkin.Log.Swap(logger) // log diagnostic/error details
// Our business and operational domain
var a Add = pureAdd
if *proxyHTTPAddr != "" {
var e endpoint.Endpoint
e = httpclient.NewClient("GET", *proxyHTTPAddr, zipkin.ToRequest(zipkinSpanFunc))
e = zipkin.AnnotateClient(zipkinSpanFunc, zipkinCol
|
请发表评论