Go 如何从其他文件访问日志实例
我最近开始学习Go,当我决定将代码放在多个文件main.Go中时,出现了一个问题。我经常需要的日志、缓存、配置、度量等常用内容在其他文件中都不可用,即使它们属于同一个主包。我想根据ConfigViper包中的数据配置一次日志实例logrus包。这只是开始,我很快就会有一个DB实例,缓存实例,等等 解决我的问题最好的方法是什么?最佳的围棋练习是什么?我怎样才能遵循干燥原则 如果我将初始日志设置放入mylog包中,然后将其导入每个包的每个文件中,那么会有多少mylog实例?每个文件/包一个/?效率高吗 日志和配置也相互依赖。我需要记录配置错误,我需要配置来配置日志Go 如何从其他文件访问日志实例,go,dependencies,Go,Dependencies,我最近开始学习Go,当我决定将代码放在多个文件main.Go中时,出现了一个问题。我经常需要的日志、缓存、配置、度量等常用内容在其他文件中都不可用,即使它们属于同一个主包。我想根据ConfigViper包中的数据配置一次日志实例logrus包。这只是开始,我很快就会有一个DB实例,缓存实例,等等 解决我的问题最好的方法是什么?最佳的围棋练习是什么?我怎样才能遵循干燥原则 如果我将初始日志设置放入mylog包中,然后将其导入每个包的每个文件中,那么会有多少mylog实例?每个文件/包一个/?效率高
user@host:~/dev/go/src/helloworld$ go build && ./helloworld
# helloworld
./cache.go:10: undefined: Log
./cache.go:17: undefined: Log
main.go:
package main
import (
"fmt"
"time"
"os"
"strconv"
"strings"
"github.com/julienschmidt/httprouter"
"crypto/hmac"
"crypto/sha256"
// "github.com/gin-gonic/gin"
"net"
"net/http"
Log "github.com/Sirupsen/logrus"
// "io/ioutil"
"encoding/json"
"encoding/hex"
"encoding/base64"
"golang.org/x/crypto/bcrypt"
"github.com/asaskevich/govalidator"
"gopkg.in/gomail.v2-unstable"
"github.com/spf13/viper"
)
.
.
.
cache.go:
package main
import (
"github.com/bradfitz/gomemcache/memcache"
)
var conn = memcache.New("10.1.11.1:11211")
func Set(key string, value []byte, ttl int32) error {
Log.Info("Cache: Set: key: " + key)
err := conn.Set(&memcache.Item{Key: key, Value: value, Expiration: ttl})
// fmt.Println(err)
return err
}
您需要将使用的包添加到使用该包的每个文件的导入部分。所以在你的缓存里。去写吧
在其他文件中不可用是什么意思?你在用go-run吗?我在用go-build你怎么调用go-build?你犯了什么错误?将此添加到您的问题中。我明白了,但它是同一个Log实例吗?如果我配置,即在main.go中设置日志格式log,更改是否也适用于cache.go中的log.*调用?是的,应该是相同的。哇,你说得对,在main.go中设置日志格式化程序也会影响它在其他包中的行为。我没想到这会奏效。是否有任何文档或参考资料可以解释这种行为?请参阅。
import (
"github.com/bradfitz/gomemcache/memcache"
Log "github.com/Sirupsen/logrus"
// List all packages mentioned in cache.go.
)