* Panic don't fatal on create new logger Fixes #5854 Signed-off-by: Andrew Thornton <art27@cantab.net> * partial broken * Update the logging infrastrcture Signed-off-by: Andrew Thornton <art27@cantab.net> * Reset the skip levels for Fatal and Error Signed-off-by: Andrew Thornton <art27@cantab.net> * broken ncsa * More log.Error fixes Signed-off-by: Andrew Thornton <art27@cantab.net> * Remove nal * set log-levels to lowercase * Make console_test test all levels * switch to lowercased levels * OK now working * Fix vetting issues * Fix lint * Fix tests * change default logging to match current gitea * Improve log testing Signed-off-by: Andrew Thornton <art27@cantab.net> * reset error skip levels to 0 * Update documentation and access logger configuration * Redirect the router log back to gitea if redirect macaron log but also allow setting the log level - i.e. TRACE * Fix broken level caching * Refactor the router log * Add Router logger * Add colorizing options * Adjust router colors * Only create logger if they will be used * update app.ini.sample * rename Attribute ColorAttribute * Change from white to green for function * Set fatal/error levels * Restore initial trace logger * Fix Trace arguments in modules/auth/auth.go * Properly handle XORMLogger * Improve admin/config page * fix fmt * Add auto-compression of old logs * Update error log levels * Remove the unnecessary skip argument from Error, Fatal and Critical * Add stacktrace support * Fix tests * Remove x/sync from vendors? * Add stderr option to console logger * Use filepath.ToSlash to protect against Windows in tests * Remove prefixed underscores from names in colors.go * Remove not implemented database logger This was removed from Gogs on 4 Mar 2016 but left in the configuration since then. * Ensure that log paths are relative to ROOT_PATH * use path.Join * rename jsonConfig to logConfig * Rename "config" to "jsonConfig" to make it clearer * Requested changes * Requested changes: XormLogger * Try to color the windows terminal If successful default to colorizing the console logs * fixup * Colorize initially too * update vendor * Colorize logs on default and remove if this is not a colorizing logger * Fix documentation * fix test * Use go-isatty to detect if on windows we are on msys or cygwin * Fix spelling mistake * Add missing vendors * More changes * Rationalise the ANSI writer protection * Adjust colors on advice from @0x5c * Make Flags a comma separated list * Move to use the windows constant for ENABLE_VIRTUAL_TERMINAL_PROCESSING * Ensure matching is done on the non-colored message - to simpify EXPRESSION
This commit is contained in:
parent
ef2a343e27
commit
704da08fdc
301 changed files with 36993 additions and 8244 deletions
|
@ -259,11 +259,13 @@ func Config(ctx *context.Context) {
|
|||
type logger struct {
|
||||
Mode, Config string
|
||||
}
|
||||
loggers := make([]*logger, len(setting.LogModes))
|
||||
for i := range setting.LogModes {
|
||||
loggers[i] = &logger{setting.LogModes[i], setting.LogConfigs[i]}
|
||||
}
|
||||
ctx.Data["Loggers"] = loggers
|
||||
ctx.Data["Loggers"] = setting.LogDescriptions
|
||||
ctx.Data["RedirectMacaronLog"] = setting.RedirectMacaronLog
|
||||
ctx.Data["EnableAccessLog"] = setting.EnableAccessLog
|
||||
ctx.Data["AccessLogTemplate"] = setting.AccessLogTemplate
|
||||
ctx.Data["DisableRouterLog"] = setting.DisableRouterLog
|
||||
ctx.Data["EnableXORMLog"] = setting.EnableXORMLog
|
||||
ctx.Data["LogSQL"] = setting.LogSQL
|
||||
|
||||
ctx.HTML(200, tplConfig)
|
||||
}
|
||||
|
|
|
@ -55,14 +55,14 @@ func ToCommit(repo *models.Repository, c *git.Commit) *api.PayloadCommit {
|
|||
if author, err := models.GetUserByEmail(c.Author.Email); err == nil {
|
||||
authorUsername = author.Name
|
||||
} else if !models.IsErrUserNotExist(err) {
|
||||
log.Error(4, "GetUserByEmail: %v", err)
|
||||
log.Error("GetUserByEmail: %v", err)
|
||||
}
|
||||
|
||||
committerUsername := ""
|
||||
if committer, err := models.GetUserByEmail(c.Committer.Email); err == nil {
|
||||
committerUsername = committer.Name
|
||||
} else if !models.IsErrUserNotExist(err) {
|
||||
log.Error(4, "GetUserByEmail: %v", err)
|
||||
log.Error("GetUserByEmail: %v", err)
|
||||
}
|
||||
|
||||
verif := models.ParseCommitWithSignature(c)
|
||||
|
|
|
@ -234,7 +234,7 @@ func CreateUserRepo(ctx *context.APIContext, owner *models.User, opt api.CreateR
|
|||
} else {
|
||||
if repo != nil {
|
||||
if err = models.DeleteRepository(ctx.User, ctx.User.ID, repo.ID); err != nil {
|
||||
log.Error(4, "DeleteRepository: %v", err)
|
||||
log.Error("DeleteRepository: %v", err)
|
||||
}
|
||||
}
|
||||
ctx.Error(500, "CreateRepository", err)
|
||||
|
@ -417,7 +417,7 @@ func Migrate(ctx *context.APIContext, form auth.MigrateRepoForm) {
|
|||
err = util.URLSanitizedError(err, remoteAddr)
|
||||
if repo != nil {
|
||||
if errDelete := models.DeleteRepository(ctx.User, ctxUser.ID, repo.ID); errDelete != nil {
|
||||
log.Error(4, "DeleteRepository: %v", errDelete)
|
||||
log.Error("DeleteRepository: %v", errDelete)
|
||||
}
|
||||
}
|
||||
ctx.Error(500, "MigrateRepository", err)
|
||||
|
@ -597,7 +597,7 @@ func TopicSearch(ctx *context.Context) {
|
|||
Limit: 10,
|
||||
})
|
||||
if err != nil {
|
||||
log.Error(2, "SearchTopics failed: %v", err)
|
||||
log.Error("SearchTopics failed: %v", err)
|
||||
ctx.JSON(500, map[string]interface{}{
|
||||
"message": "Search topics failed.",
|
||||
})
|
||||
|
|
|
@ -79,11 +79,11 @@ func GlobalInit() {
|
|||
if err := initDBEngine(); err == nil {
|
||||
log.Info("ORM engine initialization successful!")
|
||||
} else {
|
||||
log.Fatal(4, "ORM engine initialization failed: %v", err)
|
||||
log.Fatal("ORM engine initialization failed: %v", err)
|
||||
}
|
||||
|
||||
if err := models.InitOAuth2(); err != nil {
|
||||
log.Fatal(4, "Failed to initialize OAuth2 support: %v", err)
|
||||
log.Fatal("Failed to initialize OAuth2 support: %v", err)
|
||||
}
|
||||
|
||||
models.LoadRepoConfig()
|
||||
|
@ -92,7 +92,7 @@ func GlobalInit() {
|
|||
// Booting long running goroutines.
|
||||
cron.NewContext()
|
||||
if err := issue_indexer.InitIssueIndexer(false); err != nil {
|
||||
log.Fatal(4, "Failed to initialize issue indexer: %v", err)
|
||||
log.Fatal("Failed to initialize issue indexer: %v", err)
|
||||
}
|
||||
models.InitRepoIndexer()
|
||||
models.InitSyncMirrors()
|
||||
|
|
|
@ -236,7 +236,7 @@ func InstallPost(ctx *context.Context, form auth.InstallForm) {
|
|||
if com.IsFile(setting.CustomConf) {
|
||||
// Keeps custom settings if there is already something.
|
||||
if err = cfg.Append(setting.CustomConf); err != nil {
|
||||
log.Error(4, "Failed to load custom conf '%s': %v", setting.CustomConf, err)
|
||||
log.Error("Failed to load custom conf '%s': %v", setting.CustomConf, err)
|
||||
}
|
||||
}
|
||||
cfg.Section("database").Key("DB_TYPE").SetValue(models.DbCfg.Type)
|
||||
|
|
|
@ -78,7 +78,7 @@ func MembersAction(ctx *context.Context) {
|
|||
}
|
||||
|
||||
if err != nil {
|
||||
log.Error(4, "Action(%s): %v", ctx.Params(":action"), err)
|
||||
log.Error("Action(%s): %v", ctx.Params(":action"), err)
|
||||
ctx.JSON(200, map[string]interface{}{
|
||||
"ok": false,
|
||||
"err": err.Error(),
|
||||
|
|
|
@ -109,7 +109,7 @@ func TeamsAction(ctx *context.Context) {
|
|||
if models.IsErrLastOrgOwner(err) {
|
||||
ctx.Flash.Error(ctx.Tr("form.last_org_owner"))
|
||||
} else {
|
||||
log.Error(3, "Action(%s): %v", ctx.Params(":action"), err)
|
||||
log.Error("Action(%s): %v", ctx.Params(":action"), err)
|
||||
ctx.JSON(200, map[string]interface{}{
|
||||
"ok": false,
|
||||
"err": err.Error(),
|
||||
|
@ -156,7 +156,7 @@ func TeamsRepoAction(ctx *context.Context) {
|
|||
}
|
||||
|
||||
if err != nil {
|
||||
log.Error(3, "Action(%s): '%s' %v", ctx.Params(":action"), ctx.Org.Team.Name, err)
|
||||
log.Error("Action(%s): '%s' %v", ctx.Params(":action"), ctx.Org.Team.Name, err)
|
||||
ctx.ServerError("TeamsRepoAction", err)
|
||||
return
|
||||
}
|
||||
|
|
|
@ -51,7 +51,7 @@ func DeleteBranchPost(ctx *context.Context) {
|
|||
branchName := ctx.Query("name")
|
||||
isProtected, err := ctx.Repo.Repository.IsProtectedBranch(branchName, ctx.User)
|
||||
if err != nil {
|
||||
log.Error(4, "DeleteBranch: %v", err)
|
||||
log.Error("DeleteBranch: %v", err)
|
||||
ctx.Flash.Error(ctx.Tr("repo.branch.deletion_failed", branchName))
|
||||
return
|
||||
}
|
||||
|
@ -83,7 +83,7 @@ func RestoreBranchPost(ctx *context.Context) {
|
|||
|
||||
deletedBranch, err := ctx.Repo.Repository.GetDeletedBranchByID(branchID)
|
||||
if err != nil {
|
||||
log.Error(4, "GetDeletedBranchByID: %v", err)
|
||||
log.Error("GetDeletedBranchByID: %v", err)
|
||||
ctx.Flash.Error(ctx.Tr("repo.branch.restore_failed", branchName))
|
||||
return
|
||||
}
|
||||
|
@ -93,13 +93,13 @@ func RestoreBranchPost(ctx *context.Context) {
|
|||
ctx.Flash.Error(ctx.Tr("repo.branch.already_exists", deletedBranch.Name))
|
||||
return
|
||||
}
|
||||
log.Error(4, "CreateBranch: %v", err)
|
||||
log.Error("CreateBranch: %v", err)
|
||||
ctx.Flash.Error(ctx.Tr("repo.branch.restore_failed", deletedBranch.Name))
|
||||
return
|
||||
}
|
||||
|
||||
if err := ctx.Repo.Repository.RemoveDeletedBranch(deletedBranch.ID); err != nil {
|
||||
log.Error(4, "RemoveDeletedBranch: %v", err)
|
||||
log.Error("RemoveDeletedBranch: %v", err)
|
||||
ctx.Flash.Error(ctx.Tr("repo.branch.restore_failed", deletedBranch.Name))
|
||||
return
|
||||
}
|
||||
|
@ -116,14 +116,14 @@ func redirect(ctx *context.Context) {
|
|||
func deleteBranch(ctx *context.Context, branchName string) error {
|
||||
commit, err := ctx.Repo.GitRepo.GetBranchCommit(branchName)
|
||||
if err != nil {
|
||||
log.Error(4, "GetBranchCommit: %v", err)
|
||||
log.Error("GetBranchCommit: %v", err)
|
||||
return err
|
||||
}
|
||||
|
||||
if err := ctx.Repo.GitRepo.DeleteBranch(branchName, git.DeleteBranchOptions{
|
||||
Force: true,
|
||||
}); err != nil {
|
||||
log.Error(4, "DeleteBranch: %v", err)
|
||||
log.Error("DeleteBranch: %v", err)
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -137,7 +137,7 @@ func deleteBranch(ctx *context.Context, branchName string) error {
|
|||
RepoUserName: ctx.Repo.Owner.Name,
|
||||
RepoName: ctx.Repo.Repository.Name,
|
||||
}); err != nil {
|
||||
log.Error(4, "Update: %v", err)
|
||||
log.Error("Update: %v", err)
|
||||
}
|
||||
|
||||
if err := ctx.Repo.Repository.AddDeletedBranch(branchName, commit.ID.String(), ctx.User.ID); err != nil {
|
||||
|
|
|
@ -203,7 +203,7 @@ func Diff(ctx *context.Context) {
|
|||
|
||||
statuses, err := models.GetLatestCommitStatus(ctx.Repo.Repository, commitID, 0)
|
||||
if err != nil {
|
||||
log.Error(3, "GetLatestCommitStatus: %v", err)
|
||||
log.Error("GetLatestCommitStatus: %v", err)
|
||||
}
|
||||
|
||||
ctx.Data["CommitStatus"] = models.CalcCommitStatus(statuses)
|
||||
|
|
|
@ -35,7 +35,7 @@ const (
|
|||
func renderCommitRights(ctx *context.Context) bool {
|
||||
canCommit, err := ctx.Repo.CanCommitToBranch(ctx.User)
|
||||
if err != nil {
|
||||
log.Error(4, "CanCommitToBranch: %v", err)
|
||||
log.Error("CanCommitToBranch: %v", err)
|
||||
}
|
||||
ctx.Data["CanCommitToBranch"] = canCommit
|
||||
return canCommit
|
||||
|
@ -117,7 +117,7 @@ func editFile(ctx *context.Context, isNewFile bool) {
|
|||
buf = append(buf, d...)
|
||||
if content, err := templates.ToUTF8WithErr(buf); err != nil {
|
||||
if err != nil {
|
||||
log.Error(4, "ToUTF8WithErr: %v", err)
|
||||
log.Error("ToUTF8WithErr: %v", err)
|
||||
}
|
||||
ctx.Data["FileContent"] = string(buf)
|
||||
} else {
|
||||
|
|
|
@ -181,7 +181,7 @@ func HTTP(ctx *context.Context) {
|
|||
}
|
||||
} else {
|
||||
if !models.IsErrAccessTokenNotExist(err) && !models.IsErrAccessTokenEmpty(err) {
|
||||
log.Error(4, "GetAccessTokenBySha: %v", err)
|
||||
log.Error("GetAccessTokenBySha: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -324,7 +324,7 @@ func gitCommand(dir string, args ...string) []byte {
|
|||
cmd.Dir = dir
|
||||
out, err := cmd.Output()
|
||||
if err != nil {
|
||||
log.GitLogger.Error(4, fmt.Sprintf("%v - %s", err, out))
|
||||
log.GitLogger.Error(fmt.Sprintf("%v - %s", err, out))
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
@ -382,7 +382,7 @@ func serviceRPC(h serviceHandler, service string) {
|
|||
if h.r.Header.Get("Content-Encoding") == "gzip" {
|
||||
reqBody, err = gzip.NewReader(reqBody)
|
||||
if err != nil {
|
||||
log.GitLogger.Error(2, "fail to create gzip reader: %v", err)
|
||||
log.GitLogger.Error("Fail to create gzip reader: %v", err)
|
||||
h.w.WriteHeader(http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
@ -401,7 +401,7 @@ func serviceRPC(h serviceHandler, service string) {
|
|||
cmd.Stdin = reqBody
|
||||
cmd.Stderr = &stderr
|
||||
if err := cmd.Run(); err != nil {
|
||||
log.GitLogger.Error(2, "fail to serve RPC(%s): %v - %v", service, err, stderr)
|
||||
log.GitLogger.Error("Fail to serve RPC(%s): %v - %v", service, err, stderr)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
@ -514,7 +514,7 @@ func HTTPBackend(ctx *context.Context, cfg *serviceConfig) http.HandlerFunc {
|
|||
file := strings.Replace(r.URL.Path, m[1]+"/", "", 1)
|
||||
dir, err := getGitRepoPath(m[1])
|
||||
if err != nil {
|
||||
log.GitLogger.Error(4, err.Error())
|
||||
log.GitLogger.Error(err.Error())
|
||||
ctx.NotFound("HTTPBackend", err)
|
||||
return
|
||||
}
|
||||
|
|
|
@ -408,7 +408,7 @@ func NewIssue(ctx *context.Context) {
|
|||
milestoneID := ctx.QueryInt64("milestone")
|
||||
milestone, err := models.GetMilestoneByID(milestoneID)
|
||||
if err != nil {
|
||||
log.Error(4, "GetMilestoneByID: %d: %v", milestoneID, err)
|
||||
log.Error("GetMilestoneByID: %d: %v", milestoneID, err)
|
||||
} else {
|
||||
ctx.Data["milestone_id"] = milestoneID
|
||||
ctx.Data["Milestone"] = milestone
|
||||
|
@ -847,7 +847,7 @@ func ViewIssue(ctx *context.Context) {
|
|||
|
||||
if ctx.IsSigned {
|
||||
if err := pull.GetHeadRepo(); err != nil {
|
||||
log.Error(4, "GetHeadRepo: %v", err)
|
||||
log.Error("GetHeadRepo: %v", err)
|
||||
} else if pull.HeadRepo != nil && pull.HeadBranch != pull.HeadRepo.DefaultBranch {
|
||||
perm, err := models.GetUserRepoPermission(pull.HeadRepo, ctx.User)
|
||||
if err != nil {
|
||||
|
@ -857,7 +857,7 @@ func ViewIssue(ctx *context.Context) {
|
|||
if perm.CanWrite(models.UnitTypeCode) {
|
||||
// Check if branch is not protected
|
||||
if protected, err := pull.HeadRepo.IsProtectedBranch(pull.HeadBranch, ctx.User); err != nil {
|
||||
log.Error(4, "IsProtectedBranch: %v", err)
|
||||
log.Error("IsProtectedBranch: %v", err)
|
||||
} else if !protected {
|
||||
canDelete = true
|
||||
ctx.Data["DeleteBranchLink"] = ctx.Repo.RepoLink + "/pulls/" + com.ToStr(issue.Index) + "/cleanup"
|
||||
|
@ -1204,7 +1204,7 @@ func NewComment(ctx *context.Context, form auth.CreateCommentForm) {
|
|||
} else {
|
||||
isClosed := form.Status == "close"
|
||||
if err := issue.ChangeStatus(ctx.User, isClosed); err != nil {
|
||||
log.Error(4, "ChangeStatus: %v", err)
|
||||
log.Error("ChangeStatus: %v", err)
|
||||
|
||||
if models.IsErrDependenciesLeft(err) {
|
||||
if issue.IsPull {
|
||||
|
|
|
@ -1058,7 +1058,7 @@ func CleanUpPullRequest(ctx *context.Context) {
|
|||
// Check if branch is not protected
|
||||
if protected, err := pr.HeadRepo.IsProtectedBranch(pr.HeadBranch, ctx.User); err != nil || protected {
|
||||
if err != nil {
|
||||
log.Error(4, "HeadRepo.IsProtectedBranch: %v", err)
|
||||
log.Error("HeadRepo.IsProtectedBranch: %v", err)
|
||||
}
|
||||
ctx.Flash.Error(ctx.Tr("repo.branch.deletion_failed", fullBranchName))
|
||||
return
|
||||
|
@ -1067,13 +1067,13 @@ func CleanUpPullRequest(ctx *context.Context) {
|
|||
// Check if branch has no new commits
|
||||
headCommitID, err := gitBaseRepo.GetRefCommitID(pr.GetGitRefName())
|
||||
if err != nil {
|
||||
log.Error(4, "GetRefCommitID: %v", err)
|
||||
log.Error("GetRefCommitID: %v", err)
|
||||
ctx.Flash.Error(ctx.Tr("repo.branch.deletion_failed", fullBranchName))
|
||||
return
|
||||
}
|
||||
branchCommitID, err := gitRepo.GetBranchCommitID(pr.HeadBranch)
|
||||
if err != nil {
|
||||
log.Error(4, "GetBranchCommitID: %v", err)
|
||||
log.Error("GetBranchCommitID: %v", err)
|
||||
ctx.Flash.Error(ctx.Tr("repo.branch.deletion_failed", fullBranchName))
|
||||
return
|
||||
}
|
||||
|
@ -1085,14 +1085,14 @@ func CleanUpPullRequest(ctx *context.Context) {
|
|||
if err := gitRepo.DeleteBranch(pr.HeadBranch, git.DeleteBranchOptions{
|
||||
Force: true,
|
||||
}); err != nil {
|
||||
log.Error(4, "DeleteBranch: %v", err)
|
||||
log.Error("DeleteBranch: %v", err)
|
||||
ctx.Flash.Error(ctx.Tr("repo.branch.deletion_failed", fullBranchName))
|
||||
return
|
||||
}
|
||||
|
||||
if err := models.AddDeletePRBranchComment(ctx.User, pr.BaseRepo, issue.ID, pr.HeadBranch); err != nil {
|
||||
// Do not fail here as branch has already been deleted
|
||||
log.Error(4, "DeleteBranch: %v", err)
|
||||
log.Error("DeleteBranch: %v", err)
|
||||
}
|
||||
|
||||
ctx.Flash.Success(ctx.Tr("repo.branch.deletion_success", fullBranchName))
|
||||
|
|
|
@ -182,7 +182,7 @@ func CreatePost(ctx *context.Context, form auth.CreateRepoForm) {
|
|||
|
||||
if repo != nil {
|
||||
if errDelete := models.DeleteRepository(ctx.User, ctxUser.ID, repo.ID); errDelete != nil {
|
||||
log.Error(4, "DeleteRepository: %v", errDelete)
|
||||
log.Error("DeleteRepository: %v", errDelete)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -265,7 +265,7 @@ func MigratePost(ctx *context.Context, form auth.MigrateRepoForm) {
|
|||
|
||||
if repo != nil {
|
||||
if errDelete := models.DeleteRepository(ctx.User, ctxUser.ID, repo.ID); errDelete != nil {
|
||||
log.Error(4, "DeleteRepository: %v", errDelete)
|
||||
log.Error("DeleteRepository: %v", errDelete)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -110,7 +110,7 @@ func SettingsPost(ctx *context.Context, form auth.RepoSettingForm) {
|
|||
|
||||
if isNameChanged {
|
||||
if err := models.RenameRepoAction(ctx.User, oldRepoName, repo); err != nil {
|
||||
log.Error(4, "RenameRepoAction: %v", err)
|
||||
log.Error("RenameRepoAction: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -398,7 +398,7 @@ func SettingsPost(ctx *context.Context, form auth.RepoSettingForm) {
|
|||
}
|
||||
|
||||
if err := repo.SetArchiveRepoState(true); err != nil {
|
||||
log.Error(4, "Tried to archive a repo: %s", err)
|
||||
log.Error("Tried to archive a repo: %s", err)
|
||||
ctx.Flash.Error(ctx.Tr("repo.settings.archive.error"))
|
||||
ctx.Redirect(ctx.Repo.RepoLink + "/settings")
|
||||
return
|
||||
|
@ -415,7 +415,7 @@ func SettingsPost(ctx *context.Context, form auth.RepoSettingForm) {
|
|||
}
|
||||
|
||||
if err := repo.SetArchiveRepoState(false); err != nil {
|
||||
log.Error(4, "Tried to unarchive a repo: %s", err)
|
||||
log.Error("Tried to unarchive a repo: %s", err)
|
||||
ctx.Flash.Error(ctx.Tr("repo.settings.unarchive.error"))
|
||||
ctx.Redirect(ctx.Repo.RepoLink + "/settings")
|
||||
return
|
||||
|
@ -502,7 +502,7 @@ func ChangeCollaborationAccessMode(ctx *context.Context) {
|
|||
if err := ctx.Repo.Repository.ChangeCollaborationAccessMode(
|
||||
ctx.QueryInt64("uid"),
|
||||
models.AccessMode(ctx.QueryInt("mode"))); err != nil {
|
||||
log.Error(4, "ChangeCollaborationAccessMode: %v", err)
|
||||
log.Error("ChangeCollaborationAccessMode: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -60,7 +60,7 @@ func TopicsPost(ctx *context.Context) {
|
|||
|
||||
err := models.SaveTopics(ctx.Repo.Repository.ID, topics...)
|
||||
if err != nil {
|
||||
log.Error(2, "SaveTopics failed: %v", err)
|
||||
log.Error("SaveTopics failed: %v", err)
|
||||
ctx.JSON(500, map[string]interface{}{
|
||||
"message": "Save topics failed.",
|
||||
})
|
||||
|
|
|
@ -192,7 +192,7 @@ func renderDirectory(ctx *context.Context, treeLink string) {
|
|||
|
||||
statuses, err := models.GetLatestCommitStatus(ctx.Repo.Repository, ctx.Repo.Commit.ID.String(), 0)
|
||||
if err != nil {
|
||||
log.Error(3, "GetLatestCommitStatus: %v", err)
|
||||
log.Error("GetLatestCommitStatus: %v", err)
|
||||
}
|
||||
|
||||
ctx.Data["LatestCommitStatus"] = models.CalcCommitStatus(statuses)
|
||||
|
@ -304,7 +304,7 @@ func renderFile(ctx *context.Context, entry *git.TreeEntry, treeLink, rawLink st
|
|||
var fileContent string
|
||||
if content, err := templates.ToUTF8WithErr(buf); err != nil {
|
||||
if err != nil {
|
||||
log.Error(4, "ToUTF8WithErr: %v", err)
|
||||
log.Error("ToUTF8WithErr: %v", err)
|
||||
}
|
||||
fileContent = string(buf)
|
||||
} else {
|
||||
|
|
|
@ -5,11 +5,12 @@
|
|||
package routes
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/gob"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"os"
|
||||
"path"
|
||||
"text/template"
|
||||
"time"
|
||||
|
||||
"code.gitea.io/gitea/models"
|
||||
|
@ -46,7 +47,7 @@ import (
|
|||
macaron "gopkg.in/macaron.v1"
|
||||
)
|
||||
|
||||
func giteaLogger(l *log.LoggerAsWriter) macaron.Handler {
|
||||
/*func giteaLogger(l *log.LoggerAsWriter) macaron.Handler {
|
||||
return func(ctx *macaron.Context) {
|
||||
start := time.Now()
|
||||
|
||||
|
@ -57,6 +58,40 @@ func giteaLogger(l *log.LoggerAsWriter) macaron.Handler {
|
|||
rw := ctx.Resp.(macaron.ResponseWriter)
|
||||
l.Log(fmt.Sprintf("[Macaron] Completed %s %s %v %s in %v", ctx.Req.Method, ctx.Req.RequestURI, rw.Status(), http.StatusText(rw.Status()), time.Since(start)))
|
||||
}
|
||||
}*/
|
||||
|
||||
type routerLoggerOptions struct {
|
||||
Ctx *macaron.Context
|
||||
Identity *string
|
||||
Start *time.Time
|
||||
ResponseWriter *macaron.ResponseWriter
|
||||
}
|
||||
|
||||
func setupAccessLogger(m *macaron.Macaron) {
|
||||
logger := log.GetLogger("access")
|
||||
|
||||
logTemplate, _ := template.New("log").Parse(setting.AccessLogTemplate)
|
||||
m.Use(func(ctx *macaron.Context) {
|
||||
start := time.Now()
|
||||
ctx.Next()
|
||||
identity := "-"
|
||||
if val, ok := ctx.Data["SignedUserName"]; ok {
|
||||
if stringVal, ok := val.(string); ok && stringVal != "" {
|
||||
identity = stringVal
|
||||
}
|
||||
}
|
||||
rw := ctx.Resp.(macaron.ResponseWriter)
|
||||
|
||||
buf := bytes.NewBuffer([]byte{})
|
||||
logTemplate.Execute(buf, routerLoggerOptions{
|
||||
Ctx: ctx,
|
||||
Identity: &identity,
|
||||
Start: &start,
|
||||
ResponseWriter: &rw,
|
||||
})
|
||||
|
||||
logger.SendLog(log.INFO, "", "", 0, buf.String(), "")
|
||||
})
|
||||
}
|
||||
|
||||
// NewMacaron initializes Macaron instance.
|
||||
|
@ -64,10 +99,10 @@ func NewMacaron() *macaron.Macaron {
|
|||
gob.Register(&u2f.Challenge{})
|
||||
var m *macaron.Macaron
|
||||
if setting.RedirectMacaronLog {
|
||||
loggerAsWriter := log.NewLoggerAsWriter("INFO")
|
||||
loggerAsWriter := log.NewLoggerAsWriter("INFO", log.GetLogger("macaron"))
|
||||
m = macaron.NewWithLogger(loggerAsWriter)
|
||||
if !setting.DisableRouterLog {
|
||||
m.Use(giteaLogger(loggerAsWriter))
|
||||
if !setting.DisableRouterLog && setting.RouterLogLevel != log.NONE {
|
||||
log.SetupRouterLogger(m, setting.RouterLogLevel)
|
||||
}
|
||||
} else {
|
||||
m = macaron.New()
|
||||
|
@ -75,6 +110,10 @@ func NewMacaron() *macaron.Macaron {
|
|||
m.Use(macaron.Logger())
|
||||
}
|
||||
}
|
||||
// Access Logger is similar to Router Log but more configurable and by default is more like the NCSA Common Log format
|
||||
if setting.EnableAccessLog {
|
||||
setupAccessLogger(m)
|
||||
}
|
||||
m.Use(macaron.Recovery())
|
||||
if setting.EnableGzip {
|
||||
m.Use(gzip.Middleware())
|
||||
|
@ -110,7 +149,7 @@ func NewMacaron() *macaron.Macaron {
|
|||
localeNames, err := options.Dir("locale")
|
||||
|
||||
if err != nil {
|
||||
log.Fatal(4, "Failed to list locale files: %v", err)
|
||||
log.Fatal("Failed to list locale files: %v", err)
|
||||
}
|
||||
|
||||
localFiles := make(map[string][]byte)
|
||||
|
@ -119,7 +158,7 @@ func NewMacaron() *macaron.Macaron {
|
|||
localFiles[name], err = options.Locale(name)
|
||||
|
||||
if err != nil {
|
||||
log.Fatal(4, "Failed to load %s locale file. %v", name, err)
|
||||
log.Fatal("Failed to load %s locale file. %v", name, err)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -408,7 +408,7 @@ func U2FSign(ctx *context.Context, signResp u2f.SignResponse) {
|
|||
for _, reg := range regs {
|
||||
r, err := reg.Parse()
|
||||
if err != nil {
|
||||
log.Fatal(4, "parsing u2f registration: %v", err)
|
||||
log.Fatal("parsing u2f registration: %v", err)
|
||||
continue
|
||||
}
|
||||
newCounter, authErr := r.Authenticate(signResp, *challenge, reg.Counter)
|
||||
|
@ -478,7 +478,7 @@ func handleSignInFull(ctx *context.Context, u *models.User, remember bool, obeyR
|
|||
if len(u.Language) == 0 {
|
||||
u.Language = ctx.Locale.Language()
|
||||
if err := models.UpdateUserCols(u, "language"); err != nil {
|
||||
log.Error(4, fmt.Sprintf("Error updating user language [user: %d, locale: %s]", u.ID, u.Language))
|
||||
log.Error(fmt.Sprintf("Error updating user language [user: %d, locale: %s]", u.ID, u.Language))
|
||||
return setting.AppSubURL + "/"
|
||||
}
|
||||
}
|
||||
|
@ -885,7 +885,7 @@ func LinkAccountPostRegister(ctx *context.Context, cpt *captcha.Captcha, form au
|
|||
ctx.HTML(200, TplActivate)
|
||||
|
||||
if err := ctx.Cache.Put("MailResendLimit_"+u.LowerName, u.LowerName, 180); err != nil {
|
||||
log.Error(4, "Set cache(MailResendLimit) fail: %v", err)
|
||||
log.Error("Set cache(MailResendLimit) fail: %v", err)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
@ -1023,7 +1023,7 @@ func SignUpPost(ctx *context.Context, cpt *captcha.Captcha, form auth.RegisterFo
|
|||
ctx.HTML(200, TplActivate)
|
||||
|
||||
if err := ctx.Cache.Put("MailResendLimit_"+u.LowerName, u.LowerName, 180); err != nil {
|
||||
log.Error(4, "Set cache(MailResendLimit) fail: %v", err)
|
||||
log.Error("Set cache(MailResendLimit) fail: %v", err)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
@ -1050,7 +1050,7 @@ func Activate(ctx *context.Context) {
|
|||
models.SendActivateAccountMail(ctx.Context, ctx.User)
|
||||
|
||||
if err := ctx.Cache.Put("MailResendLimit_"+ctx.User.LowerName, ctx.User.LowerName, 180); err != nil {
|
||||
log.Error(4, "Set cache(MailResendLimit) fail: %v", err)
|
||||
log.Error("Set cache(MailResendLimit) fail: %v", err)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -1166,7 +1166,7 @@ func ForgotPasswdPost(ctx *context.Context) {
|
|||
|
||||
models.SendResetPasswordMail(ctx.Context, u)
|
||||
if err = ctx.Cache.Put("MailResendLimit_"+u.LowerName, u.LowerName, 180); err != nil {
|
||||
log.Error(4, "Set cache(MailResendLimit) fail: %v", err)
|
||||
log.Error("Set cache(MailResendLimit) fail: %v", err)
|
||||
}
|
||||
|
||||
ctx.Data["ResetPwdCodeLives"] = base.MinutesToFriendly(setting.Service.ResetPwdCodeLives, ctx.Locale.Language())
|
||||
|
|
|
@ -115,7 +115,7 @@ func SignInOpenIDPost(ctx *context.Context, form auth.SignInOpenIDForm) {
|
|||
redirectTo := setting.AppURL + "user/login/openid"
|
||||
url, err := openid.RedirectURL(id, redirectTo, setting.AppURL)
|
||||
if err != nil {
|
||||
log.Error(1, "Error in OpenID redirect URL: %s, %v", redirectTo, err.Error())
|
||||
log.Error("Error in OpenID redirect URL: %s, %v", redirectTo, err.Error())
|
||||
ctx.RenderWithErr(fmt.Sprintf("Unable to find OpenID provider in %s", redirectTo), tplSignInOpenID, &form)
|
||||
return
|
||||
}
|
||||
|
@ -125,7 +125,7 @@ func SignInOpenIDPost(ctx *context.Context, form auth.SignInOpenIDForm) {
|
|||
url += "&openid.ns.sreg=http%3A%2F%2Fopenid.net%2Fextensions%2Fsreg%2F1.1"
|
||||
url += "&openid.sreg.optional=nickname%2Cemail"
|
||||
|
||||
log.Trace("Form-passed openid-remember: %s", form.Remember)
|
||||
log.Trace("Form-passed openid-remember: %t", form.Remember)
|
||||
ctx.Session.Set("openid_signin_remember", form.Remember)
|
||||
|
||||
ctx.Redirect(url)
|
||||
|
@ -164,7 +164,7 @@ func signInOpenIDVerify(ctx *context.Context) {
|
|||
if u != nil {
|
||||
log.Trace("User exists, logging in")
|
||||
remember, _ := ctx.Session.Get("openid_signin_remember").(bool)
|
||||
log.Trace("Session stored openid-remember: %s", remember)
|
||||
log.Trace("Session stored openid-remember: %t", remember)
|
||||
handleSignIn(ctx, u, remember)
|
||||
return
|
||||
}
|
||||
|
@ -294,7 +294,7 @@ func ConnectOpenIDPost(ctx *context.Context, form auth.ConnectOpenIDForm) {
|
|||
ctx.Flash.Success(ctx.Tr("settings.add_openid_success"))
|
||||
|
||||
remember, _ := ctx.Session.Get("openid_signin_remember").(bool)
|
||||
log.Trace("Session stored openid-remember: %s", remember)
|
||||
log.Trace("Session stored openid-remember: %t", remember)
|
||||
handleSignIn(ctx, u, remember)
|
||||
}
|
||||
|
||||
|
@ -426,12 +426,12 @@ func RegisterOpenIDPost(ctx *context.Context, cpt *captcha.Captcha, form auth.Si
|
|||
ctx.HTML(200, TplActivate)
|
||||
|
||||
if err := ctx.Cache.Put("MailResendLimit_"+u.LowerName, u.LowerName, 180); err != nil {
|
||||
log.Error(4, "Set cache(MailResendLimit) fail: %v", err)
|
||||
log.Error("Set cache(MailResendLimit) fail: %v", err)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
remember, _ := ctx.Session.Get("openid_signin_remember").(bool)
|
||||
log.Trace("Session stored openid-remember: %s", remember)
|
||||
log.Trace("Session stored openid-remember: %t", remember)
|
||||
handleSignIn(ctx, u, remember)
|
||||
}
|
||||
|
|
|
@ -110,7 +110,7 @@ func EmailPost(ctx *context.Context, form auth.AddEmailForm) {
|
|||
models.SendActivateEmailMail(ctx.Context, ctx.User, email)
|
||||
|
||||
if err := ctx.Cache.Put("MailResendLimit_"+ctx.User.LowerName, ctx.User.LowerName, 180); err != nil {
|
||||
log.Error(4, "Set cache(MailResendLimit) fail: %v", err)
|
||||
log.Error("Set cache(MailResendLimit) fail: %v", err)
|
||||
}
|
||||
ctx.Flash.Info(ctx.Tr("settings.add_email_confirmation_sent", email.Email, base.MinutesToFriendly(setting.Service.ActiveCodeLives, ctx.Locale.Language())))
|
||||
} else {
|
||||
|
|
|
@ -142,7 +142,7 @@ func UpdateAvatarSetting(ctx *context.Context, form auth.AvatarForm, ctxUser *mo
|
|||
// generate a random one when needed.
|
||||
if ctxUser.UseCustomAvatar && !com.IsFile(ctxUser.CustomAvatarPath()) {
|
||||
if err := ctxUser.GenerateRandomAvatar(); err != nil {
|
||||
log.Error(4, "GenerateRandomAvatar[%d]: %v", ctxUser.ID, err)
|
||||
log.Error("GenerateRandomAvatar[%d]: %v", ctxUser.ID, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue