You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
2.7 KiB
99 lines
2.7 KiB
package logger
|
|
|
|
//
|
|
//import (
|
|
// "bytes"
|
|
// "context"
|
|
// "io"
|
|
// "sync"
|
|
// "time"
|
|
//
|
|
// "git.lowcodeplatform.net/fabric/lib"
|
|
//)
|
|
//
|
|
//type ConfigVfsLogger struct {
|
|
// Kind, Endpoint, AccessKeyID, SecretKey, Region, Bucket, Comma, CACert string
|
|
// Dir string
|
|
// IntervalReload time.Duration
|
|
//}
|
|
//
|
|
//// NewVfsLogger инициализация отправки логов на сервер сбора
|
|
//// ВНИМАНИЕ! крайне неэффективно
|
|
//// при добавлении лога выкачивется весь файл лога, добавляется строка и перезаписывается
|
|
//func NewVfsLogger(ctx context.Context, cfg ConfigVfsLogger) (logger Log, err error) {
|
|
// var output io.Writer
|
|
// m := sync.Mutex{}
|
|
//
|
|
// vfs := lib.NewVfs(cfg.Vfs.Kind, cfg.Vfs.Endpoint, cfg.Vfs.AccessKeyID, cfg.Vfs.SecretKey, cfg.Vfs.Region, cfg.Vfs.Bucket, cfg.Vfs.Comma, cfg.Vfs.CACert)
|
|
// err = vfs.Connect()
|
|
// if err != nil {
|
|
// return nil, err
|
|
// }
|
|
//
|
|
// sender := newVfsSender(ctx, vfs, cfg.Vfs.Dir, cfg.Srv, cfg.Uid, cfg.Vfs.IntervalReload)
|
|
// output = sender
|
|
//
|
|
// l := &log{
|
|
// Output: output,
|
|
// Levels: cfg.Level,
|
|
// UID: cfg.Uid,
|
|
// Name: cfg.Name,
|
|
// Service: cfg.Srv,
|
|
// IntervalReload: cfg.Vfs.IntervalReload,
|
|
// mux: &m,
|
|
// }
|
|
//
|
|
// return l, nil
|
|
//}
|
|
//
|
|
//type vfsSender struct {
|
|
// vfsStorage lib.Vfs
|
|
// file string
|
|
//}
|
|
//
|
|
//func (v *vfsSender) Write(p []byte) (n int, err error) {
|
|
// dataFile, _, err := v.vfsStorage.Read(v.file)
|
|
// concatSlices := [][]byte{
|
|
// dataFile,
|
|
// p,
|
|
// }
|
|
// resultSlice := bytes.Join(concatSlices, []byte(""))
|
|
//
|
|
// err = v.vfsStorage.Write(v.file, resultSlice)
|
|
// if err != nil {
|
|
// return 0, err
|
|
// }
|
|
// return len(p), nil
|
|
//}
|
|
//
|
|
//func newVfsSender(ctx context.Context, vfsStorage lib.Vfs, dir, srv, uid string, intervalReload time.Duration) io.Writer {
|
|
//
|
|
// sender := &vfsSender{
|
|
// vfsStorage,
|
|
// "",
|
|
// }
|
|
//
|
|
// //datefile := time.Now().Format("2006.01.02")
|
|
// datefile := time.Now().Format("2006.01.02")
|
|
// sender.file = "/" + dir + "/" + datefile + "_" + srv + "_" + uid + ".log"
|
|
//
|
|
// // попытка обновить файл (раз в 10 минут)
|
|
// go func() {
|
|
// ticker := time.NewTicker(intervalReload)
|
|
// defer ticker.Stop()
|
|
//
|
|
// for {
|
|
// select {
|
|
// case <-ctx.Done():
|
|
// return
|
|
// case <-ticker.C:
|
|
// datefile = time.Now().Format("2006.01.02")
|
|
//
|
|
// sender.file = "/" + dir + "/" + datefile + "_" + srv + "_" + uid + ".log"
|
|
// ticker = time.NewTicker(intervalReload)
|
|
// }
|
|
// }
|
|
// }()
|
|
//
|
|
// return sender
|
|
//}
|
|
|