Skip to content

Commit

Permalink
Add http header logging (evcc-io#2890)
Browse files Browse the repository at this point in the history
  • Loading branch information
andig authored Mar 15, 2022
1 parent a610ce8 commit 7a7f787
Show file tree
Hide file tree
Showing 5 changed files with 67 additions and 35 deletions.
19 changes: 14 additions & 5 deletions cmd/charger.go
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
package cmd

import (
"fmt"
"strconv"
"strings"

"github.com/evcc-io/evcc/api"
"github.com/evcc-io/evcc/cmd/shutdown"
"github.com/evcc-io/evcc/server"
"github.com/evcc-io/evcc/util"
"github.com/evcc-io/evcc/util/request"
"github.com/spf13/cobra"
"github.com/spf13/viper"
)
Expand All @@ -22,11 +25,12 @@ const noCurrent = -1

func init() {
rootCmd.AddCommand(chargerCmd)
chargerCmd.PersistentFlags().StringP(flagName, "n", "", "select charger by name")
chargerCmd.PersistentFlags().IntP(flagCurrent, "I", noCurrent, "set current")
chargerCmd.PersistentFlags().BoolP(flagEnable, "e", false, flagEnable)
chargerCmd.PersistentFlags().BoolP(flagDisable, "d", false, flagDisable)
chargerCmd.PersistentFlags().BoolP(flagWakeup, "w", false, flagWakeup)
chargerCmd.PersistentFlags().StringP(flagName, "n", "", fmt.Sprintf(flagNameDescription, "charger"))
chargerCmd.PersistentFlags().IntP(flagCurrent, "I", noCurrent, flagCurrentDescription)
chargerCmd.PersistentFlags().BoolP(flagEnable, "e", false, strings.Title(flagEnable))
chargerCmd.PersistentFlags().BoolP(flagDisable, "d", false, strings.Title(flagDisable))
chargerCmd.PersistentFlags().BoolP(flagWakeup, "w", false, flagWakeupDescription)
chargerCmd.PersistentFlags().Bool(flagHeaders, false, flagHeadersDescription)
}

func runCharger(cmd *cobra.Command, args []string) {
Expand All @@ -44,6 +48,11 @@ func runCharger(cmd *cobra.Command, args []string) {
log.FATAL.Fatal(err)
}

// full http request log
if cmd.PersistentFlags().Lookup(flagHeaders).Changed {
request.LogHeaders = true
}

// select single charger
if name := cmd.PersistentFlags().Lookup(flagName).Value.String(); name != "" {
for _, cfg := range conf.Chargers {
Expand Down
23 changes: 18 additions & 5 deletions cmd/flags.go
Original file line number Diff line number Diff line change
@@ -1,11 +1,24 @@
package cmd

const (
flagName = "name"
flagCurrent = "current"
flagHeaders = "log-headers"
flagHeadersDescription = "Log headers"

flagName = "name"
flagNameDescription = "Select %s by name"

flagCurrent = "current"
flagCurrentDescription = "Set maximum current"

flagEnable = "enable"
flagDisable = "disable"
flagWakeup = "wakeup"
flagStart = "start"
flagStop = "stop"

flagWakeup = "wakeup"
flagWakeupDescription = "Wake up"

flagStart = "start"
flagStartDescription = "Start charging"

flagStop = "stop"
flagStopDescription = "Stop charging"
)
11 changes: 10 additions & 1 deletion cmd/meter.go
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
package cmd

import (
"fmt"

"github.com/evcc-io/evcc/api"
"github.com/evcc-io/evcc/server"
"github.com/evcc-io/evcc/util"
"github.com/evcc-io/evcc/util/request"
"github.com/spf13/cobra"
"github.com/spf13/viper"
)
Expand All @@ -17,7 +20,8 @@ var meterCmd = &cobra.Command{

func init() {
rootCmd.AddCommand(meterCmd)
meterCmd.PersistentFlags().StringP("name", "n", "", "select meter by name")
meterCmd.PersistentFlags().StringP(flagName, "n", "", fmt.Sprintf(flagNameDescription, "meter"))
meterCmd.PersistentFlags().Bool(flagHeaders, false, flagHeadersDescription)
}

func runMeter(cmd *cobra.Command, args []string) {
Expand All @@ -35,6 +39,11 @@ func runMeter(cmd *cobra.Command, args []string) {
log.FATAL.Fatal(err)
}

// full http request log
if cmd.PersistentFlags().Lookup(flagHeaders).Changed {
request.LogHeaders = true
}

// select single meter
if name := cmd.PersistentFlags().Lookup("name").Value.String(); name != "" {
for _, cfg := range conf.Meters {
Expand Down
32 changes: 12 additions & 20 deletions cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import (
"github.com/evcc-io/evcc/server/updater"
"github.com/evcc-io/evcc/util"
"github.com/evcc-io/evcc/util/pipe"
"github.com/evcc-io/evcc/util/request"
"github.com/evcc-io/evcc/util/sponsor"
"github.com/grandcat/zeroconf"
"github.com/prometheus/client_golang/prometheus/promhttp"
Expand Down Expand Up @@ -71,33 +72,19 @@ func init() {
cobra.OnInitialize(initConfig)
configureCommand(rootCmd)

rootCmd.PersistentFlags().StringP(
"uri", "u",
"0.0.0.0:7070",
"Listen address",
)
rootCmd.PersistentFlags().StringP("uri", "u", "0.0.0.0:7070", "Listen address")
bind(rootCmd, "uri")

rootCmd.PersistentFlags().DurationP(
"interval", "i",
10*time.Second,
"Update interval",
)
rootCmd.PersistentFlags().DurationP("interval", "i", 10*time.Second, "Update interval")
bind(rootCmd, "interval")

rootCmd.PersistentFlags().Bool(
"metrics",
false,
"Expose metrics",
)
rootCmd.PersistentFlags().Bool("metrics", false, "Expose metrics")
bind(rootCmd, "metrics")

rootCmd.PersistentFlags().Bool(
"profile",
false,
"Expose pprof profiles",
)
rootCmd.PersistentFlags().Bool("profile", false, "Expose pprof profiles")
bind(rootCmd, "profile")

rootCmd.PersistentFlags().Bool(flagHeaders, false, flagHeadersDescription)
}

// initConfig reads in config file and ENV variables if set
Expand Down Expand Up @@ -163,6 +150,11 @@ func run(cmd *cobra.Command, args []string) {
log.FATAL.Fatal(err)
}

// full http request log
if cmd.PersistentFlags().Lookup(flagHeaders).Changed {
request.LogHeaders = true
}

// setup loadpoints
cp.TrackVisitors() // track duplicate usage

Expand Down
17 changes: 13 additions & 4 deletions cmd/vehicle.go
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
package cmd

import (
"fmt"

"github.com/evcc-io/evcc/api"
"github.com/evcc-io/evcc/server"
"github.com/evcc-io/evcc/util"
"github.com/evcc-io/evcc/util/request"
"github.com/spf13/cobra"
"github.com/spf13/viper"
)
Expand All @@ -17,10 +20,11 @@ var vehicleCmd = &cobra.Command{

func init() {
rootCmd.AddCommand(vehicleCmd)
vehicleCmd.PersistentFlags().StringP(flagName, "n", "", "select vehicle by name")
vehicleCmd.PersistentFlags().BoolP(flagStart, "a", false, "start charge")
vehicleCmd.PersistentFlags().BoolP(flagStop, "o", false, "stop charge")
vehicleCmd.PersistentFlags().BoolP(flagWakeup, "w", false, flagWakeup)
vehicleCmd.PersistentFlags().StringP(flagName, "n", "", fmt.Sprintf(flagNameDescription, "vehicle"))
vehicleCmd.PersistentFlags().BoolP(flagStart, "a", false, flagStartDescription)
vehicleCmd.PersistentFlags().BoolP(flagStop, "o", false, flagStopDescription)
vehicleCmd.PersistentFlags().BoolP(flagWakeup, "w", false, flagWakeupDescription)
vehicleCmd.PersistentFlags().Bool(flagHeaders, false, flagHeadersDescription)
}

func runVehicle(cmd *cobra.Command, args []string) {
Expand All @@ -38,6 +42,11 @@ func runVehicle(cmd *cobra.Command, args []string) {
log.FATAL.Fatal(err)
}

// full http request log
if cmd.PersistentFlags().Lookup(flagHeaders).Changed {
request.LogHeaders = true
}

// select single charger
if name := cmd.PersistentFlags().Lookup(flagName).Value.String(); name != "" {
for _, cfg := range conf.Vehicles {
Expand Down

0 comments on commit 7a7f787

Please sign in to comment.