remove the global log error/warn etc functions (#41404)

* remove the global log error/warn etc functions and use request context logger whenever possible
This commit is contained in:
ying-jeanne 2021-11-08 17:56:56 +01:00 committed by GitHub
parent bda60f3458
commit 54de1078c8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
28 changed files with 88 additions and 93 deletions

View File

@ -17,6 +17,7 @@ import (
)
var pluginProxyTransport *http.Transport
var applog = log.New("app.routes")
func (hs *HTTPServer) initAppPluginRoutes(r *web.Mux) {
pluginProxyTransport = &http.Transport{
@ -51,7 +52,8 @@ func (hs *HTTPServer) initAppPluginRoutes(r *web.Mux) {
for _, method := range strings.Split(route.Method, ",") {
r.Handle(strings.TrimSpace(method), url, handlers)
}
log.Debug("Plugins: Adding proxy route", "url", url)
applog.Debug("Plugins: Adding proxy route", "url", url)
}
}
}

View File

@ -40,6 +40,8 @@ type Avatar struct {
timestamp time.Time
}
var alog = log.New("avatar")
func New(hash string) *Avatar {
return &Avatar{
hash: hash,
@ -95,7 +97,7 @@ func (a *CacheServer) Handler(ctx *models.ReqContext) {
if avatar.Expired() {
// The cache item is either expired or newly created, update it from the server
if err := avatar.Update(); err != nil {
log.Debug("avatar update", "err", err)
ctx.Logger.Debug("avatar update", "err", err)
avatar = a.notFound
}
}
@ -104,7 +106,7 @@ func (a *CacheServer) Handler(ctx *models.ReqContext) {
avatar = a.notFound
} else if !exists {
if err := a.cache.Add(hash, avatar, gocache.DefaultExpiration); err != nil {
log.Debug("add avatar to cache", "err", err)
ctx.Logger.Debug("add avatar to cache", "err", err)
}
}
@ -117,7 +119,7 @@ func (a *CacheServer) Handler(ctx *models.ReqContext) {
ctx.Resp.Header().Set("Cache-Control", "private, max-age=3600")
if err := avatar.Encode(ctx.Resp); err != nil {
log.Warn("avatar encode error:", "err", err)
ctx.Logger.Warn("avatar encode error:", "err", err)
ctx.Resp.WriteHeader(500)
}
}
@ -142,7 +144,7 @@ func newNotFound(cfg *setting.Cfg) *Avatar {
// variable.
// nolint:gosec
if data, err := ioutil.ReadFile(path); err != nil {
log.Error("Failed to read user_profile.png", "path", path)
alog.Error("Failed to read user_profile.png", "path", path)
} else {
avatar.data = bytes.NewBuffer(data)
}
@ -215,7 +217,7 @@ var client = &http.Client{
func (a *thunderTask) fetch() error {
a.Avatar.timestamp = time.Now()
log.Debug("avatar.fetch(fetch new avatar)", "url", a.Url)
alog.Debug("avatar.fetch(fetch new avatar)", "url", a.Url)
req, err := http.NewRequest("GET", a.Url, nil)
if err != nil {
return err
@ -232,7 +234,7 @@ func (a *thunderTask) fetch() error {
}
defer func() {
if err := resp.Body.Close(); err != nil {
log.Warn("Failed to close response body", "err", err)
alog.Warn("Failed to close response body", "err", err)
}
}()

View File

@ -13,6 +13,7 @@ import (
)
var regNonAlphaNumeric = regexp.MustCompile("[^a-zA-Z0-9]+")
var mlog = log.New("models")
type AnyId struct {
Id int64 `json:"id"`
@ -65,7 +66,7 @@ func GetGravatarUrl(text string) string {
hasher := md5.New()
if _, err := hasher.Write([]byte(strings.ToLower(text))); err != nil {
log.Warn("Failed to hash text", "err", err)
mlog.Warn("Failed to hash text", "err", err)
}
return fmt.Sprintf(setting.AppSubUrl+"/avatar/%x", hasher.Sum(nil))
}

View File

@ -7,7 +7,6 @@ import (
"github.com/grafana/grafana/pkg/bus"
"github.com/grafana/grafana/pkg/components/simplejson"
"github.com/grafana/grafana/pkg/infra/log"
"github.com/grafana/grafana/pkg/models"
"github.com/grafana/grafana/pkg/plugins"
"github.com/grafana/grafana/pkg/services/accesscontrol"
@ -64,7 +63,7 @@ func (hs *HTTPServer) getFSDataSources(c *models.ReqContext, enabledPlugins Enab
meta, exists := enabledPlugins.Get(plugins.DataSource, ds.Type)
if !exists {
log.Error("Could not find plugin definition for data source", "datasource_type", ds.Type)
c.Logger.Error("Could not find plugin definition for data source", "datasource_type", ds.Type)
continue
}
dsMap["preload"] = meta.Preload

View File

@ -11,7 +11,6 @@ import (
"github.com/grafana/grafana/pkg/api/dtos"
"github.com/grafana/grafana/pkg/api/response"
"github.com/grafana/grafana/pkg/bus"
"github.com/grafana/grafana/pkg/infra/log"
"github.com/grafana/grafana/pkg/infra/metrics"
"github.com/grafana/grafana/pkg/infra/network"
"github.com/grafana/grafana/pkg/login"
@ -131,7 +130,7 @@ func (hs *HTTPServer) LoginView(c *models.ReqContext) {
if err := hs.ValidateRedirectTo(redirectTo); err != nil {
// the user is already logged so instead of rendering the login page with error
// it should be redirected to the home page.
log.Debug("Ignored invalid redirect_to cookie value", "redirect_to", redirectTo)
c.Logger.Debug("Ignored invalid redirect_to cookie value", "redirect_to", redirectTo)
redirectTo = hs.Cfg.AppSubURL + "/"
}
cookies.DeleteCookie(c.Resp, "redirect_to", hs.CookieOptionsFromCfg)
@ -152,12 +151,12 @@ func (hs *HTTPServer) tryOAuthAutoLogin(c *models.ReqContext) bool {
}
oauthInfos := hs.SocialService.GetOAuthInfoProviders()
if len(oauthInfos) != 1 {
log.Warn("Skipping OAuth auto login because multiple OAuth providers are configured")
c.Logger.Warn("Skipping OAuth auto login because multiple OAuth providers are configured")
return false
}
for key := range oauthInfos {
redirectUrl := hs.Cfg.AppSubURL + "/login/" + key
log.Info("OAuth auto login enabled. Redirecting to " + redirectUrl)
c.Logger.Info("OAuth auto login enabled. Redirecting to " + redirectUrl)
c.Redirect(redirectUrl, 307)
return true
}
@ -249,7 +248,7 @@ func (hs *HTTPServer) LoginPost(c *models.ReqContext) response.Response {
if err := hs.ValidateRedirectTo(redirectTo); err == nil {
result["redirectUrl"] = redirectTo
} else {
log.Info("Ignored invalid redirect_to cookie value.", "url", redirectTo)
c.Logger.Info("Ignored invalid redirect_to cookie value.", "url", redirectTo)
}
cookies.DeleteCookie(c.Resp, "redirect_to", hs.CookieOptionsFromCfg)
}

View File

@ -256,7 +256,7 @@ func (hs *HTTPServer) OAuthLogin(ctx *models.ReqContext) {
ctx.Redirect(redirectTo)
return
}
log.Debug("Ignored invalid redirect_to cookie value", "redirect_to", redirectTo)
ctx.Logger.Debug("Ignored invalid redirect_to cookie value", "redirect_to", redirectTo)
}
ctx.Redirect(setting.AppSubUrl + "/")

View File

@ -41,6 +41,8 @@ type exitWithCode struct {
var serverFs = flag.NewFlagSet("server", flag.ContinueOnError)
var clilog = log.New("cli")
func (e exitWithCode) Error() string {
return e.reason
}
@ -133,7 +135,7 @@ func executeServer(configFile, homePath, pidFile, packaging string, traceDiagnos
}
defer func() {
if err := f.Close(); err != nil {
log.Error("Failed to write trace diagnostics", "path", traceDiagnostics.file, "err", err)
clilog.Error("Failed to write trace diagnostics", "path", traceDiagnostics.file, "err", err)
}
}()

View File

@ -74,7 +74,7 @@ func (u *S3Uploader) Upload(ctx context.Context, imageDiskPath string) (string,
return "", err
}
key := u.path + rand + pngExt
log.Debug("Uploading image to s3.", "bucket", u.bucket, "path", key)
u.log.Debug("Uploading image to s3.", "bucket", u.bucket, "path", key)
// We can ignore the gosec G304 warning on this one because `imageDiskPath` comes
// from alert notifiers and is only used to upload images generated by alerting.

View File

@ -36,22 +36,6 @@ func New(logger string, ctx ...interface{}) Logger {
return Root.New(params...)
}
func Warn(msg string, v ...interface{}) {
Root.Warn(msg, v...)
}
func Debug(msg string, args ...interface{}) {
Root.Debug(msg, args...)
}
func Info(msg string, args ...interface{}) {
Root.Info(msg, args...)
}
func Error(msg string, args ...interface{}) {
Root.Error(msg, args...)
}
func Close() error {
var err error
for _, logger := range loggersToClose {

View File

@ -8,7 +8,6 @@ import (
"net/http"
"strings"
"github.com/grafana/grafana/pkg/infra/log"
"github.com/grafana/grafana/pkg/util/errutil"
"github.com/jmespath/go-jmespath"
)
@ -67,8 +66,7 @@ func (s *SocialBase) httpGet(client *http.Client, url string) (response httpGetR
err = fmt.Errorf(string(response.Body))
return
}
log.Debug("HTTP GET", "url", url, "status", r.Status, "response_body", string(response.Body))
s.log.Debug("HTTP GET", "url", url, "status", r.Status, "response_body", string(response.Body))
err = nil
return

View File

@ -28,7 +28,7 @@ func (f *Finder) Find(pluginDirs []string) ([]string, error) {
for _, dir := range pluginDirs {
exists, err := fs.Exists(dir)
if err != nil {
log.Warn("Error occurred when checking if plugin directory exists", "dir", dir, "err", err)
logger.Warn("Error occurred when checking if plugin directory exists", "dir", dir, "err", err)
}
if !exists {
logger.Warn("Skipping finding plugins as directory does not exist", "dir", dir)

View File

@ -99,7 +99,7 @@ func readPluginManifest(body []byte) (*pluginManifest, error) {
return manifest, nil
}
func Calculate(log log.Logger, plugin *plugins.Plugin) (plugins.Signature, error) {
func Calculate(mlog log.Logger, plugin *plugins.Plugin) (plugins.Signature, error) {
if plugin.IsCorePlugin() {
return plugins.Signature{
Status: plugins.SignatureInternal,
@ -113,7 +113,7 @@ func Calculate(log log.Logger, plugin *plugins.Plugin) (plugins.Signature, error
// on plugin the folder structure on disk and not user input.
byteValue, err := ioutil.ReadFile(manifestPath)
if err != nil || len(byteValue) < 10 {
log.Debug("Plugin is unsigned", "id", plugin.ID)
mlog.Debug("Plugin is unsigned", "id", plugin.ID)
return plugins.Signature{
Status: plugins.SignatureUnsigned,
}, nil
@ -121,7 +121,7 @@ func Calculate(log log.Logger, plugin *plugins.Plugin) (plugins.Signature, error
manifest, err := readPluginManifest(byteValue)
if err != nil {
log.Debug("Plugin signature invalid", "id", plugin.ID)
mlog.Debug("Plugin signature invalid", "id", plugin.ID)
return plugins.Signature{
Status: plugins.SignatureInvalid,
}, nil
@ -145,7 +145,7 @@ func Calculate(log log.Logger, plugin *plugins.Plugin) (plugins.Signature, error
for _, u := range manifest.RootURLs {
rootURL, err := url.Parse(u)
if err != nil {
log.Warn("Could not parse plugin root URL", "plugin", plugin.ID, "rootUrl", rootURL)
mlog.Warn("Could not parse plugin root URL", "plugin", plugin.ID, "rootUrl", rootURL)
return plugins.Signature{}, err
}
@ -158,7 +158,7 @@ func Calculate(log log.Logger, plugin *plugins.Plugin) (plugins.Signature, error
}
if !foundMatch {
log.Warn("Could not find root URL that matches running application URL", "plugin", plugin.ID,
mlog.Warn("Could not find root URL that matches running application URL", "plugin", plugin.ID,
"appUrl", appURL, "rootUrls", manifest.RootURLs)
return plugins.Signature{
Status: plugins.SignatureInvalid,
@ -170,7 +170,7 @@ func Calculate(log log.Logger, plugin *plugins.Plugin) (plugins.Signature, error
// Verify the manifest contents
for p, hash := range manifest.Files {
err = verifyHash(plugin.ID, filepath.Join(plugin.PluginDir, p), hash)
err = verifyHash(mlog, plugin.ID, filepath.Join(plugin.PluginDir, p), hash)
if err != nil {
return plugins.Signature{
Status: plugins.SignatureModified,
@ -183,7 +183,7 @@ func Calculate(log log.Logger, plugin *plugins.Plugin) (plugins.Signature, error
if manifest.isV2() {
pluginFiles, err := pluginFilesRequiringVerification(plugin)
if err != nil {
log.Warn("Could not collect plugin file information in directory", "pluginID", plugin.ID, "dir", plugin.PluginDir)
mlog.Warn("Could not collect plugin file information in directory", "pluginID", plugin.ID, "dir", plugin.PluginDir)
return plugins.Signature{
Status: plugins.SignatureInvalid,
}, err
@ -198,14 +198,14 @@ func Calculate(log log.Logger, plugin *plugins.Plugin) (plugins.Signature, error
}
if len(unsignedFiles) > 0 {
log.Warn("The following files were not included in the signature", "plugin", plugin.ID, "files", unsignedFiles)
mlog.Warn("The following files were not included in the signature", "plugin", plugin.ID, "files", unsignedFiles)
return plugins.Signature{
Status: plugins.SignatureModified,
}, nil
}
}
log.Debug("Plugin signature valid", "id", plugin.ID)
mlog.Debug("Plugin signature valid", "id", plugin.ID)
return plugins.Signature{
Status: plugins.SignatureValid,
Type: manifest.SignatureType,
@ -213,18 +213,18 @@ func Calculate(log log.Logger, plugin *plugins.Plugin) (plugins.Signature, error
}, nil
}
func verifyHash(pluginID string, path string, hash string) error {
func verifyHash(mlog log.Logger, pluginID string, path string, hash string) error {
// nolint:gosec
// We can ignore the gosec G304 warning on this one because `path` is based
// on the path provided in a manifest file for a plugin and not user input.
f, err := os.Open(path)
if err != nil {
log.Warn("Plugin file listed in the manifest was not found", "plugin", pluginID, "path", path)
mlog.Warn("Plugin file listed in the manifest was not found", "plugin", pluginID, "path", path)
return fmt.Errorf("plugin file listed in the manifest was not found")
}
defer func() {
if err := f.Close(); err != nil {
log.Warn("Failed to close plugin file", "path", path, "err", err)
mlog.Warn("Failed to close plugin file", "path", path, "err", err)
}
}()
@ -234,7 +234,7 @@ func verifyHash(pluginID string, path string, hash string) error {
}
sum := hex.EncodeToString(h.Sum(nil))
if sum != hash {
log.Warn("Plugin file checksum does not match signature checksum", "plugin", pluginID, "path", path)
mlog.Warn("Plugin file checksum does not match signature checksum", "plugin", pluginID, "path", path)
return fmt.Errorf("plugin file checksum does not match signature checksum")
}

View File

@ -7,7 +7,6 @@ import (
"strings"
"time"
"github.com/grafana/grafana/pkg/infra/log"
"github.com/hashicorp/go-version"
)
@ -30,25 +29,25 @@ func (m *PluginManager) checkForUpdates() {
pluginSlugs := m.externalPluginIDsAsCSV()
resp, err := httpClient.Get("https://grafana.com/api/plugins/versioncheck?slugIn=" + pluginSlugs + "&grafanaVersion=" + m.cfg.BuildVersion)
if err != nil {
log.Debug("Failed to get plugins repo from grafana.com", "error", err.Error())
m.log.Debug("Failed to get plugins repo from grafana.com", "error", err.Error())
return
}
defer func() {
if err := resp.Body.Close(); err != nil {
log.Warn("Failed to close response body", "err", err)
m.log.Warn("Failed to close response body", "err", err)
}
}()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Debug("Update check failed, reading response from grafana.com", "error", err.Error())
m.log.Debug("Update check failed, reading response from grafana.com", "error", err.Error())
return
}
var gcomPlugins []gcomPlugin
err = json.Unmarshal(body, &gcomPlugins)
if err != nil {
log.Debug("Failed to unmarshal plugin repo, reading response from grafana.com", "error", err.Error())
m.log.Debug("Failed to unmarshal plugin repo, reading response from grafana.com", "error", err.Error())
return
}

View File

@ -134,7 +134,7 @@ func (ac *OSSAccessControlService) saveFixedRole(role accesscontrol.RoleDTO) {
// needs to be increased. Hence, we don't overwrite a role with a
// greater version.
if storedRole.Version >= role.Version {
log.Debug("the has already been stored in a greater version, skipping registration", "role", role.Name)
ac.Log.Debug("the has already been stored in a greater version, skipping registration", "role", role.Name)
return
}
}
@ -150,7 +150,7 @@ func (ac *OSSAccessControlService) assignFixedRole(role accesscontrol.RoleDTO, b
if ok {
for _, assignedRole := range assignments {
if assignedRole == role.Name {
log.Debug("the role has already been assigned", "rolename", role.Name, "build_in_role", builtInRole)
ac.Log.Debug("the role has already been assigned", "rolename", role.Name, "build_in_role", builtInRole)
alreadyAssigned = true
}
}

View File

@ -24,7 +24,7 @@ type EvalContext struct {
StartTime time.Time
EndTime time.Time
Rule *Rule
log log.Logger
Log log.Logger
dashboardRef *models.DashboardRef
@ -46,7 +46,7 @@ func NewEvalContext(alertCtx context.Context, rule *Rule, requestValidator model
Rule: rule,
Logs: make([]*ResultLogEntry, 0),
EvalMatches: make([]*EvalMatch, 0),
log: log.New("alerting.evalContext"),
Log: log.New("alerting.evalContext"),
PrevAlertState: rule.State,
RequestValidator: requestValidator,
}
@ -152,7 +152,7 @@ func (c *EvalContext) GetNewState() models.AlertStateType {
func getNewStateInternal(c *EvalContext) models.AlertStateType {
if c.Error != nil {
c.log.Error("Alert Rule Result Error",
c.Log.Error("Alert Rule Result Error",
"ruleId", c.Rule.ID,
"name", c.Rule.Name,
"error", c.Error,
@ -169,7 +169,7 @@ func getNewStateInternal(c *EvalContext) models.AlertStateType {
}
if c.NoDataFound {
c.log.Info("Alert Rule returned no data",
c.Log.Info("Alert Rule returned no data",
"ruleId", c.Rule.ID,
"name", c.Rule.Name,
"changing state to", c.Rule.NoDataState.ToAlertState())

View File

@ -239,22 +239,22 @@ func generateImageCaption(evalContext *alerting.EvalContext, ruleURL string, met
if len(ruleURL) > 0 {
urlLine := fmt.Sprintf("\nURL: %s", ruleURL)
message = appendIfPossible(message, urlLine, captionLengthLimit)
message = appendIfPossible(evalContext.Log, message, urlLine, captionLengthLimit)
}
if metrics != "" {
metricsLines := fmt.Sprintf("\n\nMetrics:%s", metrics)
message = appendIfPossible(message, metricsLines, captionLengthLimit)
message = appendIfPossible(evalContext.Log, message, metricsLines, captionLengthLimit)
}
return message
}
func appendIfPossible(message string, extra string, sizeLimit int) string {
func appendIfPossible(tlog log.Logger, message string, extra string, sizeLimit int) string {
if len(extra)+len(message) <= sizeLimit {
return message + extra
}
log.Debug("Line too long for image caption.", "value", extra)
tlog.Debug("Line too long for image caption.", "value", extra)
return message
}

View File

@ -148,7 +148,7 @@ func (h *ContextHandler) initContextWithAnonymousUser(reqContext *models.ReqCont
org, err := h.SQLStore.GetOrgByName(h.Cfg.AnonymousOrgName)
if err != nil {
log.Error("Anonymous access organization error.", "org_name", h.Cfg.AnonymousOrgName, "error", err)
reqContext.Logger.Error("Anonymous access organization error.", "org_name", h.Cfg.AnonymousOrgName, "error", err)
return false
}

View File

@ -739,7 +739,7 @@ func subscribeStatusToHTTPError(status backend.SubscribeStreamStatus) (int, stri
case backend.SubscribeStreamStatusPermissionDenied:
return http.StatusForbidden, http.StatusText(http.StatusForbidden)
default:
log.Warn("unknown subscribe status", "status", status)
logger.Warn("unknown subscribe status", "status", status)
return http.StatusInternalServerError, http.StatusText(http.StatusInternalServerError)
}
}
@ -751,7 +751,7 @@ func publishStatusToHTTPError(status backend.PublishStreamStatus) (int, string)
case backend.PublishStreamStatusPermissionDenied:
return http.StatusForbidden, http.StatusText(http.StatusForbidden)
default:
log.Warn("unknown publish status", "status", status)
logger.Warn("unknown publish status", "status", status)
return http.StatusInternalServerError, http.StatusText(http.StatusInternalServerError)
}
}

View File

@ -74,7 +74,7 @@ func sameHostOriginCheck() func(r *http.Request) bool {
return func(r *http.Request) bool {
err := checkSameHost(r)
if err != nil {
log.Warn("Origin check failure", "origin", r.Header.Get("origin"), "error", err)
logger.Warn("Origin check failure", "origin", r.Header.Get("origin"), "error", err)
return false
}
return true

View File

@ -56,13 +56,13 @@ func (ls *Implementation) UpsertUser(cmd *models.UpsertUserCommand) error {
return err
}
if !cmd.SignupAllowed {
log.Warn("Not allowing login, user not found in internal user database and allow signup = false", "authmode", extUser.AuthModule)
cmd.ReqContext.Logger.Warn("Not allowing login, user not found in internal user database and allow signup = false", "authmode", extUser.AuthModule)
return login.ErrInvalidCredentials
}
limitReached, err := ls.QuotaService.QuotaReached(cmd.ReqContext, "user")
if err != nil {
log.Warn("Error getting user quota.", "error", err)
cmd.ReqContext.Logger.Warn("Error getting user quota.", "error", err)
return login.ErrGettingUserQuota
}
if limitReached {

View File

@ -11,6 +11,8 @@ import (
api "github.com/grafana/grafana/pkg/services/ngalert/api/tooling/definitions"
)
var cfglogger = log.New("notifier.config")
func PersistTemplates(cfg *api.PostableUserConfig, path string) ([]string, bool, error) {
if len(cfg.TemplateFiles) < 1 {
return nil, false, nil
@ -52,7 +54,7 @@ func PersistTemplates(cfg *api.PostableUserConfig, path string) ([]string, bool,
// Now that we have the list of _actual_ templates, let's remove the ones that we don't need.
existingFiles, err := ioutil.ReadDir(path)
if err != nil {
log.Error("unable to read directory for deleting Alertmanager templates", "err", err, "path", path)
cfglogger.Error("unable to read directory for deleting Alertmanager templates", "err", err, "path", path)
}
for _, existingFile := range existingFiles {
p := filepath.Join(path, existingFile.Name())
@ -61,7 +63,7 @@ func PersistTemplates(cfg *api.PostableUserConfig, path string) ([]string, bool,
templatesChanged = true
err := os.Remove(p)
if err != nil {
log.Error("unable to delete template", "err", err, "file", p)
cfglogger.Error("unable to delete template", "err", err, "file", p)
}
}
}

View File

@ -543,7 +543,7 @@ func (sch *schedule) ruleRoutine(grafanaCtx context.Context, key models.AlertRul
return evaluate(currentRule, attempt, ctx)
})
if err != nil {
log.Error("evaluation failed after all retries", "err", err)
logger.Error("evaluation failed after all retries", "err", err)
}
}()
case <-stopCh:

View File

@ -11,6 +11,8 @@ type OSSSearchUserFilter struct {
filters map[string]models.FilterHandler
}
var fltlog = log.New("filters")
func ProvideOSSSearchUserFilter() *OSSSearchUserFilter {
filters := make(map[string]models.FilterHandler)
filters[activeLast30Days] = NewActiveLast30DaysFilter
@ -26,7 +28,7 @@ func (o *OSSSearchUserFilter) GetFilter(filterName string, params []string) mode
}
filter, err := f(params)
if err != nil {
log.Warn("Cannot initialise the filter.", "filter", filterName, "error", err)
fltlog.Warn("Cannot initialise the filter.", "filter", filterName, "error", err)
return nil
}
return filter

View File

@ -12,13 +12,15 @@ import (
// encrypted.
type SecureJsonData map[string][]byte
var seclogger = log.New("securejsondata")
// DecryptedValue returns single decrypted value from SecureJsonData. Similar to normal map access second return value
// is true if the key exists and false if not.
func (s SecureJsonData) DecryptedValue(key string) (string, bool) {
if value, ok := s[key]; ok {
decryptedData, err := util.Decrypt(value, setting.SecretKey)
if err != nil {
log.Error(err.Error())
seclogger.Error(err.Error())
os.Exit(1)
}
return string(decryptedData), true
@ -33,7 +35,7 @@ func (s SecureJsonData) Decrypt() map[string]string {
for key, data := range s {
decryptedData, err := util.Decrypt(data, setting.SecretKey)
if err != nil {
log.Error(err.Error())
seclogger.Error(err.Error())
os.Exit(1)
}
@ -48,7 +50,7 @@ func GetEncryptedJsonData(sjd map[string]string) SecureJsonData {
for key, data := range sjd {
encryptedData, err := util.Encrypt([]byte(data), setting.SecretKey)
if err != nil {
log.Error(err.Error())
seclogger.Error(err.Error())
os.Exit(1)
}

View File

@ -12,6 +12,8 @@ import (
"xorm.io/xorm"
)
var tsclogger = log.New("sqlstore.transactions")
// WithTransactionalDbSession calls the callback with a session within a transaction.
func (ss *SQLStore) WithTransactionalDbSession(ctx context.Context, callback dbTransactionFunc) error {
return inTransactionWithRetryCtx(ctx, ss.engine, callback, 0)
@ -67,7 +69,7 @@ func inTransactionWithRetryCtx(ctx context.Context, engine *xorm.Engine, callbac
if len(sess.events) > 0 {
for _, e := range sess.events {
if err = bus.Publish(e); err != nil {
log.Error("Failed to publish event after commit.", "error", err)
tsclogger.Error("Failed to publish event after commit.", "error", err)
}
}
}

View File

@ -454,7 +454,7 @@ type CommandLineArgs struct {
Args []string
}
func parseAppUrlAndSubUrl(section *ini.Section) (string, string, error) {
func (cfg Cfg) parseAppUrlAndSubUrl(section *ini.Section) (string, string, error) {
appUrl := valueAsString(section, "root_url", "http://localhost:3000/")
if appUrl[len(appUrl)-1] != '/' {
@ -464,7 +464,7 @@ func parseAppUrlAndSubUrl(section *ini.Section) (string, string, error) {
// Check if has app suburl.
url, err := url.Parse(appUrl)
if err != nil {
log.Error("Invalid root_url.", "url", appUrl, "error", err)
cfg.Logger.Error("Invalid root_url.", "url", appUrl, "error", err)
os.Exit(1)
}
@ -621,7 +621,7 @@ func applyCommandLineProperties(props map[string]string, file *ini.File) {
}
}
func getCommandLineProperties(args []string) map[string]string {
func (cfg Cfg) getCommandLineProperties(args []string) map[string]string {
props := make(map[string]string)
for _, arg := range args {
@ -632,7 +632,7 @@ func getCommandLineProperties(args []string) map[string]string {
trimmed := strings.TrimPrefix(arg, "cfg:")
parts := strings.Split(trimmed, "=")
if len(parts) != 2 {
log.Error("Invalid command line argument.", "argument", arg)
cfg.Logger.Error("Invalid command line argument.", "argument", arg)
os.Exit(1)
}
@ -708,7 +708,7 @@ func (cfg *Cfg) loadConfiguration(args CommandLineArgs) (*ini.File, error) {
parsedFile.BlockMode = false
// command line props
commandLineProps := getCommandLineProperties(args.Args)
commandLineProps := cfg.getCommandLineProperties(args.Args)
// load default overrides
applyCommandLineDefaultProperties(commandLineProps, parsedFile)
@ -719,7 +719,7 @@ func (cfg *Cfg) loadConfiguration(args CommandLineArgs) (*ini.File, error) {
if err2 != nil {
return nil, err2
}
log.Error(err.Error())
cfg.Logger.Error(err.Error())
os.Exit(1)
}
@ -963,7 +963,7 @@ func (cfg *Cfg) Load(args CommandLineArgs) error {
cfg.readDataSourcesSettings()
if VerifyEmailEnabled && !cfg.Smtp.Enabled {
log.Warn("require_email_validation is enabled but smtp is disabled")
cfg.Logger.Warn("require_email_validation is enabled but smtp is disabled")
}
// check old key name
@ -1358,7 +1358,7 @@ func (cfg *Cfg) readRenderingSettings(iniFile *ini.File) error {
_, err := url.Parse(cfg.RendererCallbackUrl)
if err != nil {
// XXX: Should return an error?
log.Error("Invalid callback_url.", "url", cfg.RendererCallbackUrl, "error", err)
cfg.Logger.Error("Invalid callback_url.", "url", cfg.RendererCallbackUrl, "error", err)
os.Exit(1)
}
}
@ -1416,7 +1416,7 @@ func readSnapshotsSettings(cfg *Cfg, iniFile *ini.File) error {
func (cfg *Cfg) readServerSettings(iniFile *ini.File) error {
server := iniFile.Section("server")
var err error
AppUrl, AppSubUrl, err = parseAppUrlAndSubUrl(server)
AppUrl, AppSubUrl, err = cfg.parseAppUrlAndSubUrl(server)
if err != nil {
return err
}

View File

@ -98,7 +98,8 @@ func TestLoadingSettings(t *testing.T) {
})
t.Run("Should get property map from command line args array", func(t *testing.T) {
props := getCommandLineProperties([]string{"cfg:test=value", "cfg:map.test=1"})
cfg := NewCfg()
props := cfg.getCommandLineProperties([]string{"cfg:test=value", "cfg:map.test=1"})
require.Equal(t, 2, len(props))
require.Equal(t, "value", props["test"])
@ -313,11 +314,12 @@ func TestParseAppURLAndSubURL(t *testing.T) {
for _, tc := range testCases {
f := ini.Empty()
cfg := NewCfg()
s, err := f.NewSection("server")
require.NoError(t, err)
_, err = s.NewKey("root_url", tc.rootURL)
require.NoError(t, err)
appURL, appSubURL, err := parseAppUrlAndSubUrl(s)
appURL, appSubURL, err := cfg.parseAppUrlAndSubUrl(s)
require.NoError(t, err)
require.Equal(t, tc.expectedAppURL, appURL)
require.Equal(t, tc.expectedAppSubURL, appSubURL)

View File

@ -10,7 +10,6 @@ import (
"testing"
"github.com/grafana/grafana/pkg/bus"
"github.com/grafana/grafana/pkg/infra/log"
"github.com/grafana/grafana/pkg/models"
"github.com/grafana/grafana/pkg/services/sqlstore"
"github.com/grafana/grafana/pkg/tests/testinfra"
@ -110,7 +109,7 @@ func makePostRequest(t *testing.T, URL string) (int, map[string]interface{}) {
require.NoError(t, err)
t.Cleanup(func() {
_ = resp.Body.Close()
log.Warn("Failed to close response body", "err", err)
fmt.Printf("Failed to close response body err: %s", err)
})
b, err := ioutil.ReadAll(resp.Body)
require.NoError(t, err)