Gitea logging configuration has extenstive documentation and is implemented in modules/log. It is mostly used by calling log.Error, log.Warn, etc. which all call log.Log with the corresponding log level.
log.Log function does not do much except calling the EventLog method of MultiChannelledLogger. The object on which this method is called is found in a map at the name
log.DEFAULT and loaded. This object is created from the configuration when Gitea starts. It contains multiple (hence the name) EventLogger created from the configuration and each of them will receive an Event representing the log message.
LogEvent method of ChannelledLog is called with the Event matching the log message and passes it to a queue that is read from the
Start method of ChannelledLog and then sent to the LoggerProvider that will write it to a file, send it via mail, etc. The queuing of log messages ensures that goroutines won’t race with each other. In addition, the
Write method of each provider (see FileLogger for an example) is guarded by mutexes so that messages are not intermixed.