2023-05-22 06:35:11 +08:00
// Copyright 2023 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package log
import (
2023-05-26 15:31:55 +08:00
"context"
2023-05-22 06:35:11 +08:00
"runtime"
"strings"
"code.gitea.io/gitea/modules/process"
"code.gitea.io/gitea/modules/util/rotatingfilewriter"
)
2023-05-27 18:55:24 +08:00
var projectPackagePrefix string
2023-05-22 06:35:11 +08:00
func init ( ) {
_ , filename , _ , _ := runtime . Caller ( 0 )
projectPackagePrefix = strings . TrimSuffix ( filename , "modules/log/init.go" )
if projectPackagePrefix == filename {
// in case the source code file is moved, we can not trim the suffix, the code above should also be updated.
panic ( "unable to detect correct package prefix, please update file: " + filename )
}
rotatingfilewriter . ErrorPrintf = FallbackErrorf
2023-05-27 18:55:24 +08:00
process . TraceCallback = func ( skip int , start bool , pid process . IDType , description string , parentPID process . IDType , typ string ) {
2023-05-22 06:35:11 +08:00
if start && parentPID != "" {
2023-05-27 18:55:24 +08:00
Log ( skip + 1 , TRACE , "Start %s: %s (from %s) (%s)" , NewColoredValue ( pid , FgHiYellow ) , description , NewColoredValue ( parentPID , FgYellow ) , NewColoredValue ( typ , Reset ) )
2023-05-22 06:35:11 +08:00
} else if start {
2023-05-27 18:55:24 +08:00
Log ( skip + 1 , TRACE , "Start %s: %s (%s)" , NewColoredValue ( pid , FgHiYellow ) , description , NewColoredValue ( typ , Reset ) )
2023-05-22 06:35:11 +08:00
} else {
2023-05-27 18:55:24 +08:00
Log ( skip + 1 , TRACE , "Done %s: %s" , NewColoredValue ( pid , FgHiYellow ) , NewColoredValue ( description , Reset ) )
2023-05-22 06:35:11 +08:00
}
}
}
2023-05-26 15:31:55 +08:00
2023-05-27 18:55:24 +08:00
func newProcessTypedContext ( parent context . Context , desc string ) ( ctx context . Context , cancel context . CancelFunc ) {
2023-05-26 15:31:55 +08:00
// the "process manager" also calls "log.Trace()" to output logs, so if we want to create new contexts by the manager, we need to disable the trace temporarily
2023-05-27 18:55:24 +08:00
process . TraceLogDisable ( true )
defer process . TraceLogDisable ( false )
2023-05-26 15:31:55 +08:00
ctx , _ , cancel = process . GetManager ( ) . AddTypedContext ( parent , desc , process . SystemProcessType , false )
return ctx , cancel
}