私が見てきたように、各開発者は同じニーズ/ニーズを解決するための独自のニーズとアプローチを持っています。一例として、ロギング。さまざまな方法で動作する多くのロギングパッケージがあり、各開発者はニーズや好みに最も適したものを選択します。それを考えると、私は、呼び出し元のログパッケージを使用するパッケージを作成したいと考えています。出来ますか?誰かがそれをする方法がありますか?golangの "caller"プログラムに応じて、ロガーを使用するパッケージを作成する方法は?
このような何か:logrusパッケージを使用して
メインコード:
package main
import (
"os"
"github.com/Sirupsen/logrus"
"gitlab.com/tutume/_testing/globallogs/mypack"
)
var Log = logrus.New()
var myPack pack.Pack
func main() {
isDebug := os.Getenv("MYAPP_LOGLEVEL")
switch isDebug {
case "Debug":
Log.Level = logrus.DebugLevel
case "Info":
Log.Level = logrus.InfoLevel
default:
Log.Level = logrus.ErrorLevel
}
Log.Formatter = &logrus.TextFormatter{
ForceColors: true,
}
Log.Debug("Debugging...")
Log.Info("Informing...")
Log.Error("Normal...")
myPack.Logger = Log
myPack.DoSomething()
}
MYPACKコード:
package pack
type Pack struct {
Logger interface{}
}
func (mp *Pack) DoSomething() {
// Logger.Debug("Debugging...")
// Logger.Info("Informing...")
// Logger.Error("Normal...")
}
ありがとうございました。私は何かを試し、その結果をあなたに知らせます。 – Tuts