mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-05-31 20:02:09 +00:00
* 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
|
@ -72,7 +72,7 @@ func (ctx *APIContext) Error(status int, title string, obj interface{}) {
|
|||
}
|
||||
|
||||
if status == 500 {
|
||||
log.Error(4, "%s: %s", title, message)
|
||||
log.Error("%s: %s", title, message)
|
||||
}
|
||||
|
||||
ctx.JSON(status, APIError{
|
||||
|
|
|
@ -116,7 +116,7 @@ func (ctx *Context) RenderWithErr(msg string, tpl base.TplName, form interface{}
|
|||
// NotFound displays a 404 (Not Found) page and prints the given error, if any.
|
||||
func (ctx *Context) NotFound(title string, err error) {
|
||||
if err != nil {
|
||||
log.Error(4, "%s: %v", title, err)
|
||||
log.Error("%s: %v", title, err)
|
||||
if macaron.Env != macaron.PROD {
|
||||
ctx.Data["ErrorMsg"] = err
|
||||
}
|
||||
|
@ -131,7 +131,7 @@ func (ctx *Context) NotFound(title string, err error) {
|
|||
// error, if any.
|
||||
func (ctx *Context) ServerError(title string, err error) {
|
||||
if err != nil {
|
||||
log.Error(4, "%s: %v", title, err)
|
||||
log.Error("%s: %v", title, err)
|
||||
if macaron.Env != macaron.PROD {
|
||||
ctx.Data["ErrorMsg"] = err
|
||||
}
|
||||
|
@ -156,7 +156,7 @@ func (ctx *Context) NotFoundOrServerError(title string, errck func(error) bool,
|
|||
// HandleText handles HTTP status code
|
||||
func (ctx *Context) HandleText(status int, title string) {
|
||||
if (status/100 == 4) || (status/100 == 5) {
|
||||
log.Error(4, "%s", title)
|
||||
log.Error("%s", title)
|
||||
}
|
||||
ctx.PlainText(status, []byte(title))
|
||||
}
|
||||
|
|
|
@ -17,11 +17,9 @@
|
|||
package context
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"runtime"
|
||||
|
||||
"code.gitea.io/gitea/modules/log"
|
||||
macaron "gopkg.in/macaron.v1"
|
||||
)
|
||||
|
||||
|
@ -32,7 +30,7 @@ func Recovery() macaron.Handler {
|
|||
return func(ctx *Context) {
|
||||
defer func() {
|
||||
if err := recover(); err != nil {
|
||||
combinedErr := fmt.Errorf("%s\n%s", err, string(stack(3)))
|
||||
combinedErr := fmt.Errorf("%s\n%s", err, string(log.Stack(2)))
|
||||
ctx.ServerError("PANIC:", combinedErr)
|
||||
}
|
||||
}()
|
||||
|
@ -40,73 +38,3 @@ func Recovery() macaron.Handler {
|
|||
ctx.Next()
|
||||
}
|
||||
}
|
||||
|
||||
var (
|
||||
unknown = []byte("???")
|
||||
)
|
||||
|
||||
// Although we could just use debug.Stack(), this routine will return the source code
|
||||
// skip the provided number of frames - i.e. allowing us to ignore this function call
|
||||
// and the preceding function call.
|
||||
// If the problem is a lack of memory of course all this is not going to work...
|
||||
func stack(skip int) []byte {
|
||||
buf := new(bytes.Buffer)
|
||||
|
||||
// Store the last file we opened as its probable that the preceding stack frame
|
||||
// will be in the same file
|
||||
var lines [][]byte
|
||||
var lastFilename string
|
||||
for i := skip; ; i++ { // Skip over frames
|
||||
programCounter, filename, lineNumber, ok := runtime.Caller(i)
|
||||
// If we can't retrieve the information break - basically we're into go internals at this point.
|
||||
if !ok {
|
||||
break
|
||||
}
|
||||
|
||||
// Print equivalent of debug.Stack()
|
||||
fmt.Fprintf(buf, "%s:%d (0x%x)\n", filename, lineNumber, programCounter)
|
||||
// Now try to print the offending line
|
||||
if filename != lastFilename {
|
||||
data, err := ioutil.ReadFile(filename)
|
||||
if err != nil {
|
||||
// can't read this sourcefile
|
||||
// likely we don't have the sourcecode available
|
||||
continue
|
||||
}
|
||||
lines = bytes.Split(data, []byte{'\n'})
|
||||
lastFilename = filename
|
||||
}
|
||||
fmt.Fprintf(buf, "\t%s: %s\n", functionName(programCounter), source(lines, lineNumber))
|
||||
}
|
||||
return buf.Bytes()
|
||||
}
|
||||
|
||||
// functionName converts the provided programCounter into a function name
|
||||
func functionName(programCounter uintptr) []byte {
|
||||
function := runtime.FuncForPC(programCounter)
|
||||
if function == nil {
|
||||
return unknown
|
||||
}
|
||||
name := []byte(function.Name())
|
||||
|
||||
// Because we provide the filename we can drop the preceding package name.
|
||||
if lastslash := bytes.LastIndex(name, []byte("/")); lastslash >= 0 {
|
||||
name = name[lastslash+1:]
|
||||
}
|
||||
// And the current package name.
|
||||
if period := bytes.Index(name, []byte(".")); period >= 0 {
|
||||
name = name[period+1:]
|
||||
}
|
||||
// And we should just replace the interpunct with a dot
|
||||
name = bytes.Replace(name, []byte("·"), []byte("."), -1)
|
||||
return name
|
||||
}
|
||||
|
||||
// source returns a space-trimmed slice of the n'th line.
|
||||
func source(lines [][]byte, n int) []byte {
|
||||
n-- // in stack trace, lines are 1-indexed but our array is 0-indexed
|
||||
if n < 0 || n >= len(lines) {
|
||||
return unknown
|
||||
}
|
||||
return bytes.TrimSpace(lines[n])
|
||||
}
|
||||
|
|
|
@ -124,7 +124,7 @@ func (r *Repository) BranchNameSubURL() string {
|
|||
case r.IsViewCommit:
|
||||
return "commit/" + r.BranchName
|
||||
}
|
||||
log.Error(4, "Unknown view type for repo: %v", r)
|
||||
log.Error("Unknown view type for repo: %v", r)
|
||||
return ""
|
||||
}
|
||||
|
||||
|
@ -536,7 +536,7 @@ func getRefName(ctx *Context, pathType RepoRefType) string {
|
|||
}
|
||||
return path
|
||||
default:
|
||||
log.Error(4, "Unrecognized path type: %v", path)
|
||||
log.Error("Unrecognized path type: %v", path)
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue