mirror of
https://github.com/zitadel/zitadel.git
synced 2024-12-12 02:54:20 +00:00
5823fdbef9
* project quota added
* project quota removed
* add periods table
* make log record generic
* accumulate usage
* query usage
* count action run seconds
* fix filter in ReportQuotaUsage
* fix existing tests
* fix logstore tests
* fix typo
* fix: add quota unit tests command side
* fix: add quota unit tests command side
* fix: add quota unit tests command side
* move notifications into debouncer and improve limit querying
* cleanup
* comment
* fix: add quota unit tests command side
* fix remaining quota usage query
* implement InmemLogStorage
* cleanup and linting
* improve test
* fix: add quota unit tests command side
* fix: add quota unit tests command side
* fix: add quota unit tests command side
* fix: add quota unit tests command side
* action notifications and fixes for notifications query
* revert console prefix
* fix: add quota unit tests command side
* fix: add quota integration tests
* improve accountable requests
* improve accountable requests
* fix: add quota integration tests
* fix: add quota integration tests
* fix: add quota integration tests
* comment
* remove ability to store logs in db and other changes requested from review
* changes requested from review
* changes requested from review
* Update internal/api/http/middleware/access_interceptor.go
Co-authored-by: Silvan <silvan.reusser@gmail.com>
* tests: fix quotas integration tests
* improve incrementUsageStatement
* linting
* fix: delete e2e tests as intergation tests cover functionality
* Update internal/api/http/middleware/access_interceptor.go
Co-authored-by: Silvan <silvan.reusser@gmail.com>
* backup
* fix conflict
* create rc
* create prerelease
* remove issue release labeling
* fix tracing
---------
Co-authored-by: Livio Spring <livio.a@gmail.com>
Co-authored-by: Stefan Benz <stefan@caos.ch>
Co-authored-by: adlerhurst <silvan.reusser@gmail.com>
(cherry picked from commit 1a49b7d298
)
81 lines
1.8 KiB
Go
81 lines
1.8 KiB
Go
package actions
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"github.com/dop251/goja"
|
|
"github.com/dop251/goja_nodejs/console"
|
|
"github.com/sirupsen/logrus"
|
|
|
|
"github.com/zitadel/zitadel/internal/api/authz"
|
|
"github.com/zitadel/zitadel/internal/logstore"
|
|
"github.com/zitadel/zitadel/internal/logstore/record"
|
|
)
|
|
|
|
var (
|
|
logstoreService *logstore.Service[*record.ExecutionLog]
|
|
_ console.Printer = (*logger)(nil)
|
|
)
|
|
|
|
func SetLogstoreService(svc *logstore.Service[*record.ExecutionLog]) {
|
|
logstoreService = svc
|
|
}
|
|
|
|
type logger struct {
|
|
ctx context.Context
|
|
started time.Time
|
|
instanceID string
|
|
}
|
|
|
|
// newLogger returns a *logger instance that should only be used for a single action run.
|
|
// The first log call sets the started field for subsequent log calls
|
|
func newLogger(ctx context.Context, instanceID string) *logger {
|
|
return &logger{
|
|
ctx: ctx,
|
|
started: time.Time{},
|
|
instanceID: instanceID,
|
|
}
|
|
}
|
|
|
|
func (l *logger) Log(msg string) {
|
|
l.log(msg, logrus.InfoLevel, false)
|
|
}
|
|
|
|
func (l *logger) Warn(msg string) {
|
|
l.log(msg, logrus.WarnLevel, false)
|
|
}
|
|
|
|
func (l *logger) Error(msg string) {
|
|
l.log(msg, logrus.ErrorLevel, false)
|
|
}
|
|
|
|
func (l *logger) log(msg string, level logrus.Level, last bool) {
|
|
ts := time.Now()
|
|
if l.started.IsZero() {
|
|
l.started = ts
|
|
}
|
|
r := &record.ExecutionLog{
|
|
LogDate: ts,
|
|
InstanceID: l.instanceID,
|
|
Message: msg,
|
|
LogLevel: level,
|
|
}
|
|
if last {
|
|
r.Took = ts.Sub(l.started)
|
|
}
|
|
logstoreService.Handle(l.ctx, r)
|
|
}
|
|
|
|
func withLogger(ctx context.Context) Option {
|
|
instance := authz.GetInstance(ctx)
|
|
instanceID := instance.InstanceID()
|
|
return func(c *runConfig) {
|
|
c.logger = newLogger(ctx, instanceID)
|
|
c.instanceID = instanceID
|
|
c.modules["zitadel/log"] = func(runtime *goja.Runtime, module *goja.Object) {
|
|
console.RequireWithPrinter(c.logger)(runtime, module)
|
|
}
|
|
}
|
|
}
|