mirror of
https://github.com/TeaOSLab/EdgeNode.git
synced 2025-11-03 23:20:25 +08:00
83 lines
1.6 KiB
Go
83 lines
1.6 KiB
Go
package apps
|
|
|
|
import (
|
|
"github.com/iwind/TeaGo/Tea"
|
|
"github.com/iwind/TeaGo/files"
|
|
"github.com/iwind/TeaGo/logs"
|
|
"github.com/iwind/TeaGo/utils/time"
|
|
"log"
|
|
"os"
|
|
"runtime"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
type LogWriter struct {
|
|
fileAppender *files.Appender
|
|
}
|
|
|
|
func (this *LogWriter) Init() {
|
|
// 创建目录
|
|
dir := files.NewFile(Tea.LogDir())
|
|
if !dir.Exists() {
|
|
err := dir.Mkdir()
|
|
if err != nil {
|
|
log.Println("[error]" + err.Error())
|
|
}
|
|
}
|
|
|
|
logFile := files.NewFile(Tea.LogFile("run.log"))
|
|
|
|
// 打开要写入的日志文件
|
|
appender, err := logFile.Appender()
|
|
if err != nil {
|
|
logs.Error(err)
|
|
} else {
|
|
this.fileAppender = appender
|
|
}
|
|
}
|
|
|
|
func (this *LogWriter) Write(message string) {
|
|
backgroundEnv, _ := os.LookupEnv("EdgeBackground")
|
|
if backgroundEnv != "on" {
|
|
// 文件和行号
|
|
var file string
|
|
var line int
|
|
if Tea.IsTesting() {
|
|
var callDepth = 3
|
|
var ok bool
|
|
_, file, line, ok = runtime.Caller(callDepth)
|
|
if ok {
|
|
file = this.packagePath(file)
|
|
}
|
|
}
|
|
|
|
if len(file) > 0 {
|
|
log.Println(message + " (" + file + ":" + strconv.Itoa(line) + ")")
|
|
} else {
|
|
log.Println(message)
|
|
}
|
|
}
|
|
|
|
if this.fileAppender != nil {
|
|
_, err := this.fileAppender.AppendString(timeutil.Format("Y/m/d H:i:s ") + message + "\n")
|
|
if err != nil {
|
|
log.Println("[error]" + err.Error())
|
|
}
|
|
}
|
|
}
|
|
|
|
func (this *LogWriter) Close() {
|
|
if this.fileAppender != nil {
|
|
_ = this.fileAppender.Close()
|
|
}
|
|
}
|
|
|
|
func (this *LogWriter) packagePath(path string) string {
|
|
var pieces = strings.Split(path, "/")
|
|
if len(pieces) >= 2 {
|
|
return strings.Join(pieces[len(pieces)-2:], "/")
|
|
}
|
|
return path
|
|
}
|