logging: first outlet receives logger error message

Abandons stderr special-casing:

* looks weird on shell and IO redirection to same file because of
interleaving of stdout and stderr
* better than a separate dedicated outlet because it does not require
additional configuration

fixes #28

BREAK SEMANTICS CONFIG
This commit is contained in:
Christian Schwarz
2017-11-17 00:24:22 +01:00
parent a7f70a566d
commit 2bfcfa5be8
5 changed files with 31 additions and 29 deletions
+4 -6
View File
@@ -13,7 +13,7 @@ import (
)
type LoggingConfig struct {
Outlets *logger.Outlets
Outlets logger.Outlets
}
type MetadataFlags int64
@@ -26,10 +26,9 @@ const (
MetadataAll MetadataFlags = ^0
)
func LoggerErrorOutlet() logger.Outlet {
func StdoutOutlet() logger.Outlet {
formatter := &HumanFormatter{}
writer := os.Stderr
writer := os.Stdout
formatter.SetMetadataFlags(MetadataAll)
return WriterOutlet{
formatter, writer,
@@ -39,8 +38,7 @@ func LoggerErrorOutlet() logger.Outlet {
func parseLogging(i interface{}) (c *LoggingConfig, err error) {
c = &LoggingConfig{}
c.Outlets = logger.NewOutlets(LoggerErrorOutlet())
c.Outlets = logger.NewOutlets()
var asList []interface{}
if err = mapstructure.Decode(i, &asList); err != nil {
+1 -1
View File
@@ -65,7 +65,7 @@ func init() {
func testCmdGlobalInit(cmd *cobra.Command, args []string) {
out := logger.NewOutlets(WriterOutlet{&NoFormatter{}, os.Stderr})
out := logger.NewOutlets()
out.Add(WriterOutlet{&NoFormatter{}, os.Stdout}, logger.Info)
log := logger.NewLogger(out, 1*time.Second)
testCmdGlobal.log = log