You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2022/08/02 10:35:56 UTC
[plc4x] branch develop updated: feat(plc4xbrowser): added config options for logging and tracing
This is an automated email from the ASF dual-hosted git repository.
sruehl pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git
The following commit(s) were added to refs/heads/develop by this push:
new 55ded83c0 feat(plc4xbrowser): added config options for logging and tracing
55ded83c0 is described below
commit 55ded83c0491fa4b92327efb970e4c65742501ef
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Tue Aug 2 12:35:50 2022 +0200
feat(plc4xbrowser): added config options for logging and tracing
+ log option will be persisted
---
plc4go/tools/plc4xbrowser/config.go | 10 +++++--
plc4go/tools/plc4xbrowser/main.go | 57 +++++++++++++++++++++++++++++++++++--
2 files changed, 63 insertions(+), 4 deletions(-)
diff --git a/plc4go/tools/plc4xbrowser/config.go b/plc4go/tools/plc4xbrowser/config.go
index addf4d8c8..1713c6a49 100644
--- a/plc4go/tools/plc4xbrowser/config.go
+++ b/plc4go/tools/plc4xbrowser/config.go
@@ -20,6 +20,7 @@
package main
import (
+ "github.com/rs/zerolog"
"github.com/rs/zerolog/log"
"gopkg.in/yaml.v3"
"os"
@@ -35,7 +36,8 @@ type Config struct {
History struct {
Last10Hosts []string `yaml:"last_hosts"`
}
- lastUpdated time.Time `yaml:"last_updated"`
+ LastUpdated time.Time `yaml:"last_updated"`
+ LogLevel string `yaml:"log_level"`
}
func init() {
@@ -74,7 +76,7 @@ func loadConfig() {
}
func saveConfig() {
- config.lastUpdated = time.Now()
+ config.LastUpdated = time.Now()
f, err := os.OpenFile(configFile, os.O_RDWR|os.O_CREATE, 0755)
if err != nil {
log.Warn().Err(err).Msg("Can't save config file")
@@ -109,3 +111,7 @@ func addHost(host string) {
}
config.History.Last10Hosts = append(config.History.Last10Hosts, host)
}
+
+func setLevel(level zerolog.Level) {
+ config.LogLevel = level.String()
+}
diff --git a/plc4go/tools/plc4xbrowser/main.go b/plc4go/tools/plc4xbrowser/main.go
index 951f634ad..49d217958 100644
--- a/plc4go/tools/plc4xbrowser/main.go
+++ b/plc4go/tools/plc4xbrowser/main.go
@@ -39,12 +39,13 @@ import (
"github.com/rs/zerolog/log"
plc4go "github.com/apache/plc4x/plc4go/pkg/api"
+ plc4x_config "github.com/apache/plc4x/plc4go/pkg/api/config"
"github.com/apache/plc4x/plc4go/pkg/api/model"
"github.com/apache/plc4x/plc4go/pkg/api/transports"
)
// TODO: replace with real commands
-const plc4xCommands = "connect,disconnect,read,write,register,subscribe,quit"
+const plc4xCommands = "connect,disconnect,read,write,register,subscribe,quit,log,plc4x-conf"
const protocols = "ads,bacnetip,c-bus,s7"
var driverManager plc4go.PlcDriverManager
@@ -249,6 +250,28 @@ func buildCommandArea(newPrimitive func(text string) tview.Primitive, applicatio
for connectionsString, _ := range connections {
entries = append(entries, "subscribe "+connectionsString)
}
+ case strings.HasPrefix(currentText, "log"):
+ levels := []string{
+ zerolog.LevelTraceValue,
+ zerolog.LevelDebugValue,
+ zerolog.LevelInfoValue,
+ zerolog.LevelWarnValue,
+ zerolog.LevelErrorValue,
+ zerolog.LevelFatalValue,
+ zerolog.LevelPanicValue,
+ }
+ for _, level := range levels {
+ entries = append(entries, "log "+level)
+ }
+ case strings.HasPrefix(currentText, "plc4x-conf"):
+ for _, plc4xConf := range []string{
+ "TraceTransactionManagerWorkers",
+ "TraceTransactionManagerTransactions",
+ "TraceDefaultMessageCodecWorker",
+ } {
+ entries = append(entries, "plc4x-conf "+plc4xConf+" true")
+ entries = append(entries, "plc4x-conf "+plc4xConf+" false")
+ }
}
return
})
@@ -332,6 +355,27 @@ func handleCommand(commandText string) error {
}
log.Info().Msgf("subscription result %s", subscriptionRequestResult.GetResponse())
}
+ case strings.HasPrefix(commandText, "log"):
+ level := strings.TrimPrefix(commandText, "log ")
+ parseLevel, err := zerolog.ParseLevel(level)
+ if err != nil {
+ return errors.Wrapf(err, "Error setting log level")
+ }
+ setLevel(parseLevel)
+ log.Logger = log.Logger.Level(parseLevel)
+ case strings.HasPrefix(commandText, "plc4x-conf"):
+ plc4xConf := strings.TrimPrefix(commandText, "plc4x-conf ")
+ switch {
+ case strings.HasPrefix(plc4xConf, "TraceTransactionManagerWorkers "):
+ on := strings.TrimPrefix(plc4xConf, "TraceTransactionManagerWorkers ")
+ plc4x_config.TraceTransactionManagerWorkers = on == "true"
+ case strings.HasPrefix(plc4xConf, "TraceTransactionManagerTransactions "):
+ on := strings.TrimPrefix(plc4xConf, "TraceTransactionManagerTransactions ")
+ plc4x_config.TraceTransactionManagerWorkers = on == "true"
+ case strings.HasPrefix(plc4xConf, "TraceDefaultMessageCodecWorker "):
+ on := strings.TrimPrefix(plc4xConf, "TraceDefaultMessageCodecWorker ")
+ plc4x_config.TraceTransactionManagerWorkers = on == "true"
+ }
default:
return errors.Errorf("%s not found", commandText)
}
@@ -388,11 +432,20 @@ func buildOutputArea(newPrimitive func(text string) tview.Primitive, application
application.Draw()
})
+ logLevel := zerolog.InfoLevel
+ if configuredLevel := config.LogLevel; configuredLevel != "" {
+ if parsedLevel, err := zerolog.ParseLevel(configuredLevel); err != nil {
+ panic(err)
+ } else {
+ logLevel = parsedLevel
+ }
+ }
+
log.Logger = log.
//// Enable below if you want to see the filenames
//With().Caller().Logger().
Output(zerolog.ConsoleWriter{Out: tview.ANSIWriter(consoleView)}).
- Level(zerolog.InfoLevel)
+ Level(logLevel)
consoleView.SetBorder(false)
outputArea.AddItem(consoleView, 2, 0, 1, 1, 0, 0, false)