mirror of
https://github.com/caddyserver/caddy.git
synced 2024-11-22 22:17:51 +08:00
logging: Support placeholders in level and filename (#2872)
* Add support for placeholders in Config Fixes #2870 * Replace placeholders only in logging config. Placeholders in log level and filename incase of file output are replaced. * Add Provision to filewriter module for replacing placeholders
This commit is contained in:
parent
7ff02f37b6
commit
dfdddcfacb
11
logging.go
11
logging.go
|
@ -280,8 +280,15 @@ type CustomLog struct {
|
|||
}
|
||||
|
||||
func (cl *CustomLog) provision(ctx Context, logging *Logging) error {
|
||||
// Replace placeholder for log level
|
||||
repl := NewReplacer()
|
||||
level, err := repl.ReplaceOrErr(cl.Level, true, true)
|
||||
if err != nil {
|
||||
return fmt.Errorf("invalid log level: %v", err)
|
||||
}
|
||||
|
||||
// set up the log level
|
||||
switch cl.Level {
|
||||
switch level {
|
||||
case "debug":
|
||||
cl.levelEnabler = zapcore.DebugLevel
|
||||
case "", "info":
|
||||
|
@ -351,7 +358,7 @@ func (cl *CustomLog) provision(ctx Context, logging *Logging) error {
|
|||
if cl.writerOpener == nil {
|
||||
cl.writerOpener = StderrWriter{}
|
||||
}
|
||||
var err error
|
||||
|
||||
cl.writer, _, err = logging.openWriter(cl.writerOpener)
|
||||
if err != nil {
|
||||
return fmt.Errorf("opening log writer using %#v: %v", cl.writerOpener, err)
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
package logging
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
@ -46,6 +47,19 @@ func (FileWriter) CaddyModule() caddy.ModuleInfo {
|
|||
}
|
||||
}
|
||||
|
||||
// Provision sets up the module
|
||||
func (fw *FileWriter) Provision(ctx caddy.Context) error {
|
||||
// Replace placeholder in filename
|
||||
repl := caddy.NewReplacer()
|
||||
filename, err := repl.ReplaceOrErr(fw.Filename, true, true)
|
||||
if err != nil {
|
||||
return fmt.Errorf("invalid filename for log file: %v", err)
|
||||
}
|
||||
|
||||
fw.Filename = filename
|
||||
return nil
|
||||
}
|
||||
|
||||
func (fw FileWriter) String() string {
|
||||
fpath, err := filepath.Abs(fw.Filename)
|
||||
if err == nil {
|
||||
|
@ -76,6 +90,7 @@ func (fw FileWriter) OpenWriter() (io.WriteCloser, error) {
|
|||
if fw.RollKeepDays == 0 {
|
||||
fw.RollKeepDays = 90
|
||||
}
|
||||
|
||||
return &lumberjack.Logger{
|
||||
Filename: fw.Filename,
|
||||
MaxSize: fw.RollSizeMB,
|
||||
|
@ -89,3 +104,8 @@ func (fw FileWriter) OpenWriter() (io.WriteCloser, error) {
|
|||
// otherwise just open a regular file
|
||||
return os.OpenFile(fw.Filename, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0666)
|
||||
}
|
||||
|
||||
// Interface guards
|
||||
var (
|
||||
_ caddy.Provisioner = (*FileWriter)(nil)
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue
Block a user