mirror of
https://github.com/SagerNet/sing-box.git
synced 2024-11-10 02:53:12 +00:00
platform: Add stderr redirect
This commit is contained in:
parent
0d7aa19cd1
commit
8699412a4c
|
@ -63,7 +63,7 @@ func (s *CommandServer) handleLogConn(conn net.Conn) error {
|
||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
case <-ctx.Done():
|
case <-ctx.Done():
|
||||||
return ctx.Err()
|
return nil
|
||||||
case message := <-subscription:
|
case message := <-subscription:
|
||||||
err = writeLog(conn, []byte(message))
|
err = writeLog(conn, []byte(message))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
29
experimental/libbox/log.go
Normal file
29
experimental/libbox/log.go
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
//go:build darwin || linux
|
||||||
|
|
||||||
|
package libbox
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"golang.org/x/sys/unix"
|
||||||
|
)
|
||||||
|
|
||||||
|
var stderrFile *os.File
|
||||||
|
|
||||||
|
func RedirectStderr(path string) error {
|
||||||
|
if stats, err := os.Stat(path); err == nil && stats.Size() > 0 {
|
||||||
|
_ = os.Rename(path, path+".old")
|
||||||
|
}
|
||||||
|
outputFile, err := os.Create(path)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
err = unix.Dup2(int(outputFile.Fd()), int(os.Stderr.Fd()))
|
||||||
|
if err != nil {
|
||||||
|
outputFile.Close()
|
||||||
|
os.Remove(outputFile.Name())
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
stderrFile = outputFile
|
||||||
|
return nil
|
||||||
|
}
|
Loading…
Reference in a new issue