Skip to content

Commit 0f270f8

Browse files
committed
feat: expose env var GHFS_LOG_QUEUE_SIZE to config log queue size
1 parent d7eb8b3 commit 0f270f8

File tree

7 files changed

+37
-9
lines changed

7 files changed

+37
-9
lines changed

README.md

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -347,16 +347,21 @@ ghfs [options]
347347

348348
## Environment variables
349349

350+
### GHFS_CPU_PROFILE_FILE
351+
Generate Go's CPU pprof profile to specific file path.
352+
350353
### GHFS_PID_FILE
351354
Specify PID file path. PID will be written into the file on application startup.
352355

356+
### GHFS_LOG_QUEUE_SIZE
357+
Specify the size of queue to hold logs that have not been written to destination.
358+
If it is full, sending logs will be blocked until the queue has free space.
359+
Defaults to 256.
360+
353361
### GHFS_QUIET
354362
To prevent outputting additional information on console, like accessible URLs, etc,
355363
set value to "1".
356364

357-
### GHFS_CPU_PROFILE_FILE
358-
Generate Go's CPU pprof profile to specific file path.
359-
360365
## Shortcut key for default theme
361366
- ``, ``: move focus between path items
362367
- `Ctrl`/`Opt` + ``: move focus to first path item

README.zh-CN.md

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -337,15 +337,20 @@ ghfs [选项]
337337

338338
## 环境变量
339339

340+
### GHFS_CPU_PROFILE_FILE
341+
生成Go的CPU pprof profile到指定的文件路径。
342+
340343
### GHFS_PID_FILE
341344
指定进程ID文件路径。进程ID会在应用启动时被写入文件。
342345

346+
### GHFS_LOG_QUEUE_SIZE
347+
指定日志队列的长度,用于临时保存暂未写入目的地的日志。
348+
如果队列满,日志发送将被阻塞,直到队列有空余空间。
349+
默认值为256。
350+
343351
### GHFS_QUIET
344352
为避免在控制台输出额外信息,例如可访问的URL等,可将值设为“1”。
345353

346-
### GHFS_CPU_PROFILE_FILE
347-
生成Go的CPU pprof profile到指定的文件路径。
348-
349354
## 默认主题的快捷键
350355
- ``, ``:使焦点在路径项之间移动
351356
- `Ctrl`/`Opt` + ``:把焦点移动到第一个路径项

src/main.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@ import (
55
"mjpclab.dev/ghfs/src/app"
66
"mjpclab.dev/ghfs/src/param"
77
"mjpclab.dev/ghfs/src/serverError"
8+
"mjpclab.dev/ghfs/src/serverLog"
89
"mjpclab.dev/ghfs/src/setting"
910
"mjpclab.dev/ghfs/src/version"
1011
"os"
1112
"os/signal"
13+
"strconv"
1214
"syscall"
1315
)
1416

@@ -69,6 +71,14 @@ func Main() (ok bool) {
6971
defer StopCPUProfile(cpuProfileFile)
7072
}
7173

74+
// log queue size
75+
if len(settings.LogQueueSize) > 0 {
76+
logQueueSize, err := strconv.Atoi(settings.LogQueueSize)
77+
if err == nil && logQueueSize > 0 {
78+
serverLog.SetLogQueueSize(logQueueSize)
79+
}
80+
}
81+
7282
// app
7383
appInst, errs := app.NewApp(params, settings)
7484
if serverError.CheckError(errs...) {

src/serverLog/buffer.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,14 @@ import (
55
"time"
66
)
77

8-
const chanBuffer = 128
98
const logEnding = '\n'
109

10+
var logQueueSize = 256
11+
12+
func SetLogQueueSize(size int) {
13+
logQueueSize = size
14+
}
15+
1116
func NewBuffer(cap int) []byte {
1217
// prefix: 20 bytes, suffix '\n' 1 byte
1318
buf := make([]byte, 0, 21+cap)

src/serverLog/fileDest.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ type fileDest struct {
1212
}
1313

1414
func newFileDest(fsPath string, file *os.File, info os.FileInfo) *fileDest {
15-
ch := make(chan []byte, chanBuffer)
15+
ch := make(chan []byte, logQueueSize)
1616

1717
dest := &fileDest{
1818
fsPath: fsPath,

src/serverLog/writerDest.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ type writerDest struct {
1111
}
1212

1313
func newWriterDest(w io.Writer) *writerDest {
14-
ch := make(chan []byte, chanBuffer)
14+
ch := make(chan []byte, logQueueSize)
1515

1616
dest := &writerDest{
1717
w: w,

src/setting/main.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,20 @@ import (
88
type Setting struct {
99
CPUProfileFile string
1010
PidFile string
11+
LogQueueSize string
1112
Quiet bool
1213
}
1314

1415
func ParseFromEnv() *Setting {
1516
cpuProfileFile := os.Getenv("GHFS_CPU_PROFILE_FILE")
1617
pidFile := os.Getenv("GHFS_PID_FILE")
18+
logQueueSize := os.Getenv("GHFS_LOG_QUEUE_SIZE")
1719
quiet := util.GetBoolEnv("GHFS_QUIET")
1820

1921
return &Setting{
2022
CPUProfileFile: cpuProfileFile,
2123
PidFile: pidFile,
24+
LogQueueSize: logQueueSize,
2225
Quiet: quiet,
2326
}
2427
}

0 commit comments

Comments
 (0)