gitea

Зеркало из https://github.com/go-gitea/gitea
Форк
0
/
event_writer_file.go 
53 строки · 1.4 Кб
1
// Copyright 2023 The Gitea Authors. All rights reserved.
2
// SPDX-License-Identifier: MIT
3

4
package log
5

6
import (
7
	"io"
8

9
	"code.gitea.io/gitea/modules/util/rotatingfilewriter"
10
)
11

12
type WriterFileOption struct {
13
	FileName         string
14
	MaxSize          int64
15
	LogRotate        bool
16
	DailyRotate      bool
17
	MaxDays          int
18
	Compress         bool
19
	CompressionLevel int
20
}
21

22
type eventWriterFile struct {
23
	*EventWriterBaseImpl
24
	fileWriter io.WriteCloser
25
}
26

27
var _ EventWriter = (*eventWriterFile)(nil)
28

29
func NewEventWriterFile(name string, mode WriterMode) EventWriter {
30
	w := &eventWriterFile{EventWriterBaseImpl: NewEventWriterBase(name, "file", mode)}
31
	opt := mode.WriterOption.(WriterFileOption)
32
	var err error
33
	w.fileWriter, err = rotatingfilewriter.Open(opt.FileName, &rotatingfilewriter.Options{
34
		Rotate:           opt.LogRotate,
35
		MaximumSize:      opt.MaxSize,
36
		RotateDaily:      opt.DailyRotate,
37
		KeepDays:         opt.MaxDays,
38
		Compress:         opt.Compress,
39
		CompressionLevel: opt.CompressionLevel,
40
	})
41
	if err != nil {
42
		// if the log file can't be opened, what should it do? panic/exit? ignore logs? fallback to stderr?
43
		// it seems that "fallback to stderr" is slightly better than others ....
44
		FallbackErrorf("unable to open log file %q: %v", opt.FileName, err)
45
		w.fileWriter = nopCloser{Writer: LoggerToWriter(FallbackErrorf)}
46
	}
47
	w.OutputWriteCloser = w.fileWriter
48
	return w
49
}
50

51
func init() {
52
	RegisterEventWriter("file", NewEventWriterFile)
53
}
54

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.