gitech
1// Copyright 2023 The Gitea Authors. All rights reserved.
2// SPDX-License-Identifier: MIT
3
4// Package log provides logging capabilities for Gitea.
5// Concepts:
6//
7// * Logger: a Logger provides logging functions and dispatches log events to all its writers
8//
9// * EventWriter: written log Event to a destination (eg: file, console)
10// - EventWriterBase: the base struct of a writer, it contains common fields and functions for all writers
11// - WriterType: the type name of a writer, eg: console, file
12// - WriterName: aka Mode Name in document, the name of a writer instance, it's usually defined by the config file.
13// It is called "mode name" because old code use MODE as config key, to keep compatibility, keep this concept.
14//
15// * WriterMode: the common options for all writers, eg: log level.
16// - WriterConsoleOption and others: the specified options for a writer, eg: file path, remote address.
17//
18// Call graph:
19// -> log.Info()
20// -> LoggerImpl.Log()
21// -> LoggerImpl.SendLogEvent, then the event goes into writer's goroutines
22// -> EventWriter.Run() handles the events
23package log24
25// BaseLogger provides the basic logging functions
26type BaseLogger interface {27Log(skip int, level Level, format string, v ...any)28GetLevel() Level29}
30
31// LevelLogger provides level-related logging functions
32type LevelLogger interface {33LevelEnabled(level Level) bool34
35Trace(format string, v ...any)36Debug(format string, v ...any)37Info(format string, v ...any)38Warn(format string, v ...any)39Error(format string, v ...any)40Critical(format string, v ...any)41}
42
43type Logger interface {44BaseLogger
45LevelLogger
46}
47
48type LogStringer interface { //nolint:revive49LogString() string50}
51