代码拉取完成,页面将自动刷新
package aurora
import (
"fmt"
"gitee.com/aurora-engine/web"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"net"
"os"
"strings"
"time"
)
var (
defaultLogger *zap.Logger
)
func init() {
// 自定义zap日志配置
encoderConfig := zapcore.EncoderConfig{
TimeKey: "time",
LevelKey: "level",
NameKey: "logger",
CallerKey: "line",
MessageKey: "message",
StacktraceKey: "stacktrace",
LineEnding: zapcore.DefaultLineEnding,
EncodeLevel: zapcore.LowercaseLevelEncoder, // 小写编码器
EncodeTime: func(t time.Time, enc zapcore.PrimitiveArrayEncoder) {
enc.AppendString(t.Format(time.DateTime))
},
EncodeDuration: zapcore.SecondsDurationEncoder, //
EncodeCaller: zapcore.ShortCallerEncoder, // 全路径编码器
EncodeName: zapcore.FullNameEncoder,
}
cfg := zap.Config{
Encoding: "console",
Level: zap.NewAtomicLevelAt(zap.DebugLevel),
OutputPaths: []string{"stdout"},
ErrorOutputPaths: []string{"stderr"},
EncoderConfig: encoderConfig,
}
var err error
defaultLogger, err = cfg.Build()
if err != nil {
panic(err)
}
}
func Log() web.Interceptor {
return &DefaultLogger{}
}
type DefaultLogger struct {
}
func (logger *DefaultLogger) Before(ctx web.Context, handler any) (bool, error) {
ctx["AuroraStartTime20230516"] = time.Now()
return true, nil
}
func (logger *DefaultLogger) Complete(ctx web.Context, handler any) error {
return nil
}
func (logger *DefaultLogger) After(ctx web.Context, handler any) error {
start := ctx["AuroraStartTime20230516"].(time.Time)
sub := time.Now().Sub(start).String()
r := ctx.Request()
url := r.URL.Path
method := r.Method
// 尝试从 X-Forwarded-For 中获取
xForwardedFor := r.Header.Get(`X-Forwarded-For`)
ip := strings.TrimSpace(strings.Split(xForwardedFor, `,`)[0])
if ip == `` {
// 尝试从 X-Real-Ip 中获取
ip = strings.TrimSpace(r.Header.Get(`X-Real-Ip`))
if ip == `` {
// 直接从 Remote Addr 中获取
_ip, _, err := net.SplitHostPort(strings.TrimSpace(r.RemoteAddr))
if err != nil {
panic(err)
} else {
ip = _ip
}
}
}
info := fmt.Sprintf("| %3d | %s | %s | %s | %s\n", ctx.Status(), sub, ip, method, url)
fmt.Fprint(os.Stdout, info)
return nil
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。