plugin/log: remove OutputFile (#1217)
* plugin/log: remove OutputFile We use stdout for everything, remove OutputFile as it isn't used and causes confusion. Fixes #1216 * PR feedback
This commit is contained in:
parent
0186aadfcf
commit
beef212fbe
3 changed files with 57 additions and 80 deletions
|
@ -72,7 +72,6 @@ func (l Logger) Name() string { return "log" }
|
||||||
type Rule struct {
|
type Rule struct {
|
||||||
NameScope string
|
NameScope string
|
||||||
Class response.Class
|
Class response.Class
|
||||||
OutputFile string
|
|
||||||
Format string
|
Format string
|
||||||
Log *log.Logger
|
Log *log.Logger
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,13 +29,7 @@ func setup(c *caddy.Controller) error {
|
||||||
// Open the log files for writing when the server starts
|
// Open the log files for writing when the server starts
|
||||||
c.OnStartup(func() error {
|
c.OnStartup(func() error {
|
||||||
for i := 0; i < len(rules); i++ {
|
for i := 0; i < len(rules); i++ {
|
||||||
// We only support stdout
|
rules[i].Log = log.New(os.Stdout, "", 0)
|
||||||
writer := os.Stdout
|
|
||||||
if rules[i].OutputFile != "stdout" {
|
|
||||||
return plugin.Error("log", fmt.Errorf("invalid log file: %s", rules[i].OutputFile))
|
|
||||||
}
|
|
||||||
|
|
||||||
rules[i].Log = log.New(writer, "", 0)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
@ -58,18 +52,19 @@ func logParse(c *caddy.Controller) ([]Rule, error) {
|
||||||
// Nothing specified; use defaults
|
// Nothing specified; use defaults
|
||||||
rules = append(rules, Rule{
|
rules = append(rules, Rule{
|
||||||
NameScope: ".",
|
NameScope: ".",
|
||||||
OutputFile: DefaultLogFilename,
|
|
||||||
Format: DefaultLogFormat,
|
Format: DefaultLogFormat,
|
||||||
})
|
})
|
||||||
} else if len(args) == 1 {
|
} else if len(args) == 1 {
|
||||||
// Only an output file specified.
|
// Only an output file specified, can only be *stdout*
|
||||||
|
if args[0] != "stdout" {
|
||||||
|
return nil, fmt.Errorf("only stdout is allowed: %s", args[0])
|
||||||
|
}
|
||||||
rules = append(rules, Rule{
|
rules = append(rules, Rule{
|
||||||
NameScope: ".",
|
NameScope: ".",
|
||||||
OutputFile: args[0],
|
|
||||||
Format: DefaultLogFormat,
|
Format: DefaultLogFormat,
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
// Name scope, output file, and maybe a format specified
|
// Name scope, output file (stdout), and maybe a format specified
|
||||||
|
|
||||||
format := DefaultLogFormat
|
format := DefaultLogFormat
|
||||||
|
|
||||||
|
@ -84,9 +79,12 @@ func logParse(c *caddy.Controller) ([]Rule, error) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if args[1] != "stdout" {
|
||||||
|
return nil, fmt.Errorf("only stdout is allowed: %s", args[1])
|
||||||
|
}
|
||||||
|
|
||||||
rules = append(rules, Rule{
|
rules = append(rules, Rule{
|
||||||
NameScope: dns.Fqdn(args[0]),
|
NameScope: dns.Fqdn(args[0]),
|
||||||
OutputFile: args[1],
|
|
||||||
Format: format,
|
Format: format,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,68 +16,52 @@ func TestLogParse(t *testing.T) {
|
||||||
}{
|
}{
|
||||||
{`log`, false, []Rule{{
|
{`log`, false, []Rule{{
|
||||||
NameScope: ".",
|
NameScope: ".",
|
||||||
OutputFile: DefaultLogFilename,
|
|
||||||
Format: DefaultLogFormat,
|
Format: DefaultLogFormat,
|
||||||
}}},
|
}}},
|
||||||
{`log log.txt`, false, []Rule{{
|
{`log example.org stdout`, false, []Rule{{
|
||||||
NameScope: ".",
|
|
||||||
OutputFile: "log.txt",
|
|
||||||
Format: DefaultLogFormat,
|
|
||||||
}}},
|
|
||||||
{`log example.org log.txt`, false, []Rule{{
|
|
||||||
NameScope: "example.org.",
|
NameScope: "example.org.",
|
||||||
OutputFile: "log.txt",
|
|
||||||
Format: DefaultLogFormat,
|
Format: DefaultLogFormat,
|
||||||
}}},
|
}}},
|
||||||
{`log example.org. stdout`, false, []Rule{{
|
{`log example.org. stdout`, false, []Rule{{
|
||||||
NameScope: "example.org.",
|
NameScope: "example.org.",
|
||||||
OutputFile: "stdout",
|
|
||||||
Format: DefaultLogFormat,
|
Format: DefaultLogFormat,
|
||||||
}}},
|
}}},
|
||||||
{`log example.org log.txt {common}`, false, []Rule{{
|
{`log example.org stdout {common}`, false, []Rule{{
|
||||||
NameScope: "example.org.",
|
NameScope: "example.org.",
|
||||||
OutputFile: "log.txt",
|
|
||||||
Format: CommonLogFormat,
|
Format: CommonLogFormat,
|
||||||
}}},
|
}}},
|
||||||
{`log example.org accesslog.txt {combined}`, false, []Rule{{
|
{`log example.org stdout {combined}`, false, []Rule{{
|
||||||
NameScope: "example.org.",
|
NameScope: "example.org.",
|
||||||
OutputFile: "accesslog.txt",
|
|
||||||
Format: CombinedLogFormat,
|
Format: CombinedLogFormat,
|
||||||
}}},
|
}}},
|
||||||
{`log example.org. log.txt
|
{`log example.org. stdout
|
||||||
log example.net accesslog.txt {combined}`, false, []Rule{{
|
log example.net stdout {combined}`, false, []Rule{{
|
||||||
NameScope: "example.org.",
|
NameScope: "example.org.",
|
||||||
OutputFile: "log.txt",
|
|
||||||
Format: DefaultLogFormat,
|
Format: DefaultLogFormat,
|
||||||
}, {
|
}, {
|
||||||
NameScope: "example.net.",
|
NameScope: "example.net.",
|
||||||
OutputFile: "accesslog.txt",
|
|
||||||
Format: CombinedLogFormat,
|
Format: CombinedLogFormat,
|
||||||
}}},
|
}}},
|
||||||
{`log example.org stdout {host}
|
{`log example.org stdout {host}
|
||||||
log example.org log.txt {when}`, false, []Rule{{
|
log example.org stdout {when}`, false, []Rule{{
|
||||||
NameScope: "example.org.",
|
NameScope: "example.org.",
|
||||||
OutputFile: "stdout",
|
|
||||||
Format: "{host}",
|
Format: "{host}",
|
||||||
}, {
|
}, {
|
||||||
NameScope: "example.org.",
|
NameScope: "example.org.",
|
||||||
OutputFile: "log.txt",
|
|
||||||
Format: "{when}",
|
Format: "{when}",
|
||||||
}}},
|
}}},
|
||||||
|
|
||||||
{`log example.org log.txt {
|
{`log example.org stdout {
|
||||||
class all
|
class all
|
||||||
}`, false, []Rule{{
|
}`, false, []Rule{{
|
||||||
NameScope: "example.org.",
|
NameScope: "example.org.",
|
||||||
OutputFile: "log.txt",
|
|
||||||
Format: CommonLogFormat,
|
Format: CommonLogFormat,
|
||||||
Class: response.All,
|
Class: response.All,
|
||||||
}}},
|
}}},
|
||||||
{`log example.org log.txt {
|
{`log example.org stdout {
|
||||||
class denial
|
class denial
|
||||||
}`, false, []Rule{{
|
}`, false, []Rule{{
|
||||||
NameScope: "example.org.",
|
NameScope: "example.org.",
|
||||||
OutputFile: "log.txt",
|
|
||||||
Format: CommonLogFormat,
|
Format: CommonLogFormat,
|
||||||
Class: response.Denial,
|
Class: response.Denial,
|
||||||
}}},
|
}}},
|
||||||
|
@ -85,10 +69,11 @@ func TestLogParse(t *testing.T) {
|
||||||
class denial
|
class denial
|
||||||
}`, false, []Rule{{
|
}`, false, []Rule{{
|
||||||
NameScope: ".",
|
NameScope: ".",
|
||||||
OutputFile: DefaultLogFilename,
|
|
||||||
Format: CommonLogFormat,
|
Format: CommonLogFormat,
|
||||||
Class: response.Denial,
|
Class: response.Denial,
|
||||||
}}},
|
}}},
|
||||||
|
|
||||||
|
{`log log.txt`, true, nil},
|
||||||
}
|
}
|
||||||
for i, test := range tests {
|
for i, test := range tests {
|
||||||
c := caddy.NewTestController("dns", test.inputLogRules)
|
c := caddy.NewTestController("dns", test.inputLogRules)
|
||||||
|
@ -110,11 +95,6 @@ func TestLogParse(t *testing.T) {
|
||||||
i, j, test.expectedLogRules[j].NameScope, actualLogRule.NameScope)
|
i, j, test.expectedLogRules[j].NameScope, actualLogRule.NameScope)
|
||||||
}
|
}
|
||||||
|
|
||||||
if actualLogRule.OutputFile != test.expectedLogRules[j].OutputFile {
|
|
||||||
t.Errorf("Test %d expected %dth LogRule OutputFile to be %s , but got %s",
|
|
||||||
i, j, test.expectedLogRules[j].OutputFile, actualLogRule.OutputFile)
|
|
||||||
}
|
|
||||||
|
|
||||||
if actualLogRule.Format != test.expectedLogRules[j].Format {
|
if actualLogRule.Format != test.expectedLogRules[j].Format {
|
||||||
t.Errorf("Test %d expected %dth LogRule Format to be %s , but got %s",
|
t.Errorf("Test %d expected %dth LogRule Format to be %s , but got %s",
|
||||||
i, j, test.expectedLogRules[j].Format, actualLogRule.Format)
|
i, j, test.expectedLogRules[j].Format, actualLogRule.Format)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue