Go 如何将日志从单独的包写入单独的文件

Go 如何将日志从单独的包写入单独的文件,go,logging,Go,Logging,在这里,我有一个下面有多个包的应用程序,我不想将日志写入一个文件。比如说: src/packageA/snmp.go src/packageA/http.go 我想将日志从snmp.go写入/var/log/snmp.log和http.go写入/var/log/http.log 詹姆斯应该给你这个信息。例如: package main import ( "fmt" "runtime" "path" "path/filepath" ) func m

在这里,我有一个下面有多个包的应用程序,我不想将日志写入一个文件。比如说:

   src/packageA/snmp.go
   src/packageA/http.go
我想将日志从snmp.go写入
/var/log/snmp.log
http.go
写入
/var/log/http.log

詹姆斯应该给你这个信息。例如:

package main

import (
    "fmt"
    "runtime"
    "path"
    "path/filepath"
)

func main() {
    _, filename, _, ok := runtime.Caller(0)
    if !ok {
        panic("No caller!")
    }
    fmt.Printf("Calling file: %s\n", path.Base(filename))

    // Without extension
    fname := fmt.Sprintf("%s.log", path.Base(filename[0:len(filename)-len(filepath.Ext(filename))]))
    fmt.Printf("Desired log file name: %s\n", fname)

    // you can now use fname to form desired log path
    logPath := path.Join("/var/log", fname)
    fmt.Printf("Desired log path: %s\n", logPath)
}
此示例将输出:

Calling file: main.go
Desired log file name: main.log
Desired log path: /var/log/main.log

这只是一个例子。如果这不起作用。

如果您使用它可能会很有用

到目前为止您尝试了什么?我尝试对多个文件使用beego日志,您是否为每个目标文件创建了一个日志,并在相应的.go文件中使用该日志?我尝试将日志用作全局变量,因此,不确定如何分别为每个文件执行该操作。@JamesSapam请查看并查看不同的调用者参数值是否有效。你也可以做负数(
-1
可能有用)。让我试试。