完善日志输出配置
This commit is contained in:
10
README.md
10
README.md
@@ -1,12 +1,16 @@
|
||||
## todo
|
||||
|
||||
日志格式自定义转换
|
||||
|
||||
客户端断开后端口未释放问题
|
||||
|
||||
需要压测
|
||||
|
||||
ProxyConn 直接实现 Conn 相同的接口,不再取出 Conn 使用
|
||||
|
||||
配置退出等待时间
|
||||
|
||||
log 控制台颜色,输出错误堆栈
|
||||
输出错误堆栈
|
||||
|
||||
读取 conn 时加上超时机制
|
||||
|
||||
@@ -18,9 +22,11 @@ log 控制台颜色,输出错误堆栈
|
||||
|
||||
在控制通道直接传输目标地址,客户端可以同时开始数据通道和目标地址的连接建立
|
||||
|
||||
检查退出超时的问题
|
||||
|
||||
### 长期
|
||||
|
||||
退出顺序好像有问题,需要检查
|
||||
需要测试,考虑是否切换到 gnet
|
||||
|
||||
实现一个 socks context 以在子组件中获取 socks 相关信息
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# 应用配置
|
||||
APP_CTRL_PORT=18080
|
||||
APP_DATA_PORT=18081
|
||||
APP_LOG_MODE=dev# dev | test
|
||||
|
||||
# 数据库配置
|
||||
DB_HOST=localhost
|
||||
|
||||
@@ -25,6 +25,7 @@ services:
|
||||
environment:
|
||||
APP_CTRL_PORT: $APP_CTRL_PORT
|
||||
APP_DATA_PORT: $APP_DATA_PORT
|
||||
APP_LOG_MODE: $APP_LOG_MODE
|
||||
DB_HOST: $DB_HOST
|
||||
DB_PORT: $DB_PORT
|
||||
DB_DATABASE: $DB_DATABASE
|
||||
@@ -50,7 +51,6 @@ services:
|
||||
- "8686:8686"
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- /var/lib/docker/containers:/var/lib/docker/containers:ro
|
||||
- /var/log/vector:/temp/vector
|
||||
networks:
|
||||
- proxy-server-test
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
timezone = "Asia/Shanghai"
|
||||
|
||||
[api]
|
||||
enabled = true
|
||||
address = "0.0.0.0:8686"
|
||||
@@ -11,6 +13,11 @@ inputs = ["docker"]
|
||||
type = "remap"
|
||||
source = '''
|
||||
. = parse_json!(.message)
|
||||
.time, err = format_timestamp(parse_timestamp!(.time, "%+"), "%Y-%m-%dT%H:%M:%S", "Asia/Shanghai")
|
||||
if err != null {
|
||||
log("Unable to parse JSON: " + err, level: "error")
|
||||
abort
|
||||
}
|
||||
'''
|
||||
|
||||
# ===============
|
||||
|
||||
15
server/pkg/env/env.go
vendored
15
server/pkg/env/env.go
vendored
@@ -12,6 +12,7 @@ import (
|
||||
var (
|
||||
AppCtrlPort uint16
|
||||
AppDataPort uint16
|
||||
AppLogMode string
|
||||
|
||||
DbHost string
|
||||
DbPort uint16
|
||||
@@ -29,6 +30,7 @@ func Init() {
|
||||
slog.Debug("没有本地环境变量文件")
|
||||
}
|
||||
|
||||
// AppCtrlPort
|
||||
appCtrlPortStr := os.Getenv("APP_CTRL_PORT")
|
||||
if appCtrlPortStr == "" {
|
||||
panic("环境变量 APP_CTRL_PORT 未设置")
|
||||
@@ -39,6 +41,7 @@ func Init() {
|
||||
}
|
||||
AppCtrlPort = uint16(appCtrlPort)
|
||||
|
||||
// AppDataPort
|
||||
appDataPortStr := os.Getenv("APP_DATA_PORT")
|
||||
if appDataPortStr == "" {
|
||||
panic("环境变量 APP_DATA_PORT 未设置")
|
||||
@@ -49,11 +52,19 @@ func Init() {
|
||||
}
|
||||
AppDataPort = uint16(appDataPort)
|
||||
|
||||
// AppLogMode
|
||||
appLogMode := os.Getenv("APP_LOG_MODE")
|
||||
if appLogMode == "" {
|
||||
AppLogMode = "dev"
|
||||
}
|
||||
|
||||
// DbHost
|
||||
DbHost = os.Getenv("DB_HOST")
|
||||
if DbHost == "" {
|
||||
panic("环境变量 DB_HOST 未设置")
|
||||
}
|
||||
|
||||
// DbPort
|
||||
dbPortStr := os.Getenv("DB_PORT")
|
||||
if dbPortStr == "" {
|
||||
dbPortStr = "5432"
|
||||
@@ -64,21 +75,25 @@ func Init() {
|
||||
}
|
||||
DbPort = uint16(dbPort)
|
||||
|
||||
// DbDatabase
|
||||
DbDatabase = os.Getenv("DB_DATABASE")
|
||||
if DbDatabase == "" {
|
||||
panic("环境变量 DB_DATABASE 未设置")
|
||||
}
|
||||
|
||||
// DbUsername
|
||||
DbUsername = os.Getenv("DB_USERNAME")
|
||||
if DbUsername == "" {
|
||||
panic("环境变量 DB_USERNAME 未设置")
|
||||
}
|
||||
|
||||
// DbPassword
|
||||
DbPassword = os.Getenv("DB_PASSWORD")
|
||||
if DbPassword == "" {
|
||||
panic("环境变量 DB_PASSWORD 未设置")
|
||||
}
|
||||
|
||||
// DbTimezone
|
||||
DbTimezone = os.Getenv("DB_TIMEZONE")
|
||||
if DbTimezone == "" {
|
||||
DbTimezone = "Asia/Shanghai"
|
||||
|
||||
@@ -12,6 +12,9 @@ import (
|
||||
"sync"
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
"github.com/lmittmann/tint"
|
||||
"github.com/mattn/go-colorable"
|
||||
)
|
||||
|
||||
type Context struct {
|
||||
@@ -75,23 +78,25 @@ func Start() {
|
||||
}
|
||||
|
||||
func initLog() {
|
||||
// writer := colorable.NewColorable(os.Stdout)
|
||||
// logger := slog.New(tint.NewHandler(writer, &tint.Options{
|
||||
// Level: slog.LevelDebug,
|
||||
// TimeFormat: time.RFC3339,
|
||||
// ReplaceAttr: func(_ []string, attr slog.Attr) slog.Attr {
|
||||
// err, ok := attr.Value.Any().(error)
|
||||
// if !ok {
|
||||
// return attr
|
||||
// }
|
||||
// return tint.Err(err)
|
||||
// },
|
||||
// }))
|
||||
// slog.SetDefault(logger)
|
||||
handler := slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{
|
||||
Level: slog.LevelDebug,
|
||||
})
|
||||
slog.SetDefault(slog.New(handler))
|
||||
switch env.AppLogMode {
|
||||
case "dev":
|
||||
writer := colorable.NewColorable(os.Stdout)
|
||||
logger := slog.New(tint.NewHandler(writer, &tint.Options{
|
||||
Level: slog.LevelDebug,
|
||||
TimeFormat: time.RFC3339,
|
||||
ReplaceAttr: func(_ []string, attr slog.Attr) slog.Attr {
|
||||
err, ok := attr.Value.Any().(error)
|
||||
if ok {
|
||||
return tint.Err(err)
|
||||
}
|
||||
return attr
|
||||
},
|
||||
}))
|
||||
slog.SetDefault(logger)
|
||||
case "test":
|
||||
logger := slog.New(slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{}))
|
||||
slog.SetDefault(logger)
|
||||
}
|
||||
}
|
||||
|
||||
func startFwdServer(ctx context.Context) error {
|
||||
|
||||
Reference in New Issue
Block a user