完善日志输出配置

This commit is contained in:
2025-03-05 10:20:02 +08:00
parent a1717ff0d1
commit ae7fcfe484
6 changed files with 54 additions and 20 deletions

View File

@@ -1,12 +1,16 @@
## todo ## todo
日志格式自定义转换
客户端断开后端口未释放问题 客户端断开后端口未释放问题
需要压测
ProxyConn 直接实现 Conn 相同的接口,不再取出 Conn 使用 ProxyConn 直接实现 Conn 相同的接口,不再取出 Conn 使用
配置退出等待时间 配置退出等待时间
log 控制台颜色,输出错误堆栈 输出错误堆栈
读取 conn 时加上超时机制 读取 conn 时加上超时机制
@@ -18,9 +22,11 @@ log 控制台颜色,输出错误堆栈
在控制通道直接传输目标地址,客户端可以同时开始数据通道和目标地址的连接建立 在控制通道直接传输目标地址,客户端可以同时开始数据通道和目标地址的连接建立
检查退出超时的问题
### 长期 ### 长期
退出顺序好像有问题,需要检查 需要测试,考虑是否切换到 gnet
实现一个 socks context 以在子组件中获取 socks 相关信息 实现一个 socks context 以在子组件中获取 socks 相关信息

View File

@@ -1,6 +1,7 @@
# 应用配置 # 应用配置
APP_CTRL_PORT=18080 APP_CTRL_PORT=18080
APP_DATA_PORT=18081 APP_DATA_PORT=18081
APP_LOG_MODE=dev# dev | test
# 数据库配置 # 数据库配置
DB_HOST=localhost DB_HOST=localhost

View File

@@ -25,6 +25,7 @@ services:
environment: environment:
APP_CTRL_PORT: $APP_CTRL_PORT APP_CTRL_PORT: $APP_CTRL_PORT
APP_DATA_PORT: $APP_DATA_PORT APP_DATA_PORT: $APP_DATA_PORT
APP_LOG_MODE: $APP_LOG_MODE
DB_HOST: $DB_HOST DB_HOST: $DB_HOST
DB_PORT: $DB_PORT DB_PORT: $DB_PORT
DB_DATABASE: $DB_DATABASE DB_DATABASE: $DB_DATABASE
@@ -50,7 +51,6 @@ services:
- "8686:8686" - "8686:8686"
volumes: volumes:
- /var/run/docker.sock:/var/run/docker.sock - /var/run/docker.sock:/var/run/docker.sock
- /var/lib/docker/containers:/var/lib/docker/containers:ro
- /var/log/vector:/temp/vector - /var/log/vector:/temp/vector
networks: networks:
- proxy-server-test - proxy-server-test

View File

@@ -1,3 +1,5 @@
timezone = "Asia/Shanghai"
[api] [api]
enabled = true enabled = true
address = "0.0.0.0:8686" address = "0.0.0.0:8686"
@@ -11,6 +13,11 @@ inputs = ["docker"]
type = "remap" type = "remap"
source = ''' source = '''
. = parse_json!(.message) . = 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
View File

@@ -12,6 +12,7 @@ import (
var ( var (
AppCtrlPort uint16 AppCtrlPort uint16
AppDataPort uint16 AppDataPort uint16
AppLogMode string
DbHost string DbHost string
DbPort uint16 DbPort uint16
@@ -29,6 +30,7 @@ func Init() {
slog.Debug("没有本地环境变量文件") slog.Debug("没有本地环境变量文件")
} }
// AppCtrlPort
appCtrlPortStr := os.Getenv("APP_CTRL_PORT") appCtrlPortStr := os.Getenv("APP_CTRL_PORT")
if appCtrlPortStr == "" { if appCtrlPortStr == "" {
panic("环境变量 APP_CTRL_PORT 未设置") panic("环境变量 APP_CTRL_PORT 未设置")
@@ -39,6 +41,7 @@ func Init() {
} }
AppCtrlPort = uint16(appCtrlPort) AppCtrlPort = uint16(appCtrlPort)
// AppDataPort
appDataPortStr := os.Getenv("APP_DATA_PORT") appDataPortStr := os.Getenv("APP_DATA_PORT")
if appDataPortStr == "" { if appDataPortStr == "" {
panic("环境变量 APP_DATA_PORT 未设置") panic("环境变量 APP_DATA_PORT 未设置")
@@ -49,11 +52,19 @@ func Init() {
} }
AppDataPort = uint16(appDataPort) AppDataPort = uint16(appDataPort)
// AppLogMode
appLogMode := os.Getenv("APP_LOG_MODE")
if appLogMode == "" {
AppLogMode = "dev"
}
// DbHost
DbHost = os.Getenv("DB_HOST") DbHost = os.Getenv("DB_HOST")
if DbHost == "" { if DbHost == "" {
panic("环境变量 DB_HOST 未设置") panic("环境变量 DB_HOST 未设置")
} }
// DbPort
dbPortStr := os.Getenv("DB_PORT") dbPortStr := os.Getenv("DB_PORT")
if dbPortStr == "" { if dbPortStr == "" {
dbPortStr = "5432" dbPortStr = "5432"
@@ -64,21 +75,25 @@ func Init() {
} }
DbPort = uint16(dbPort) DbPort = uint16(dbPort)
// DbDatabase
DbDatabase = os.Getenv("DB_DATABASE") DbDatabase = os.Getenv("DB_DATABASE")
if DbDatabase == "" { if DbDatabase == "" {
panic("环境变量 DB_DATABASE 未设置") panic("环境变量 DB_DATABASE 未设置")
} }
// DbUsername
DbUsername = os.Getenv("DB_USERNAME") DbUsername = os.Getenv("DB_USERNAME")
if DbUsername == "" { if DbUsername == "" {
panic("环境变量 DB_USERNAME 未设置") panic("环境变量 DB_USERNAME 未设置")
} }
// DbPassword
DbPassword = os.Getenv("DB_PASSWORD") DbPassword = os.Getenv("DB_PASSWORD")
if DbPassword == "" { if DbPassword == "" {
panic("环境变量 DB_PASSWORD 未设置") panic("环境变量 DB_PASSWORD 未设置")
} }
// DbTimezone
DbTimezone = os.Getenv("DB_TIMEZONE") DbTimezone = os.Getenv("DB_TIMEZONE")
if DbTimezone == "" { if DbTimezone == "" {
DbTimezone = "Asia/Shanghai" DbTimezone = "Asia/Shanghai"

View File

@@ -12,6 +12,9 @@ import (
"sync" "sync"
"syscall" "syscall"
"time" "time"
"github.com/lmittmann/tint"
"github.com/mattn/go-colorable"
) )
type Context struct { type Context struct {
@@ -75,23 +78,25 @@ func Start() {
} }
func initLog() { func initLog() {
// writer := colorable.NewColorable(os.Stdout) switch env.AppLogMode {
// logger := slog.New(tint.NewHandler(writer, &tint.Options{ case "dev":
// Level: slog.LevelDebug, writer := colorable.NewColorable(os.Stdout)
// TimeFormat: time.RFC3339, logger := slog.New(tint.NewHandler(writer, &tint.Options{
// ReplaceAttr: func(_ []string, attr slog.Attr) slog.Attr { Level: slog.LevelDebug,
// err, ok := attr.Value.Any().(error) TimeFormat: time.RFC3339,
// if !ok { ReplaceAttr: func(_ []string, attr slog.Attr) slog.Attr {
// return attr err, ok := attr.Value.Any().(error)
// } if ok {
// return tint.Err(err) return tint.Err(err)
// }, }
// })) return attr
// slog.SetDefault(logger) },
handler := slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{ }))
Level: slog.LevelDebug, slog.SetDefault(logger)
}) case "test":
slog.SetDefault(slog.New(handler)) logger := slog.New(slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{}))
slog.SetDefault(logger)
}
} }
func startFwdServer(ctx context.Context) error { func startFwdServer(ctx context.Context) error {