完善日志输出配置
This commit is contained in:
10
README.md
10
README.md
@@ -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 相关信息
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
15
server/pkg/env/env.go
vendored
@@ -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"
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user