1
0
Fork 0
mirror of https://github.com/anyproto/anytype-heart.git synced 2025-06-08 05:47:07 +09:00

add new logger from any-sync

This commit is contained in:
Roman Khafizianov 2023-04-25 18:17:59 +02:00 committed by Mikhail Iudin
parent 59e8db0c44
commit 5849c65f5f
No known key found for this signature in database
GPG key ID: FAAAA8BAABDFF1C0
7 changed files with 93 additions and 185 deletions

View file

@ -174,8 +174,6 @@ func (app *App) Start(ctx context.Context) (err error) {
}
}
logging.RefreshSubsystemLevels() // to make sure we know about all logging subsystems that were externally-created, e.g. in the libp2p
for i, s := range app.components {
if serviceRun, ok := s.(ComponentRunnable); ok {
start := time.Now()

View file

@ -6,7 +6,6 @@ package main
import (
"context"
"fmt"
"github.com/uber/jaeger-client-go"
"net"
"net/http"
_ "net/http/pprof"
@ -15,11 +14,9 @@ import (
"strconv"
"syscall"
"github.com/uber/jaeger-client-go"
"github.com/anytypeio/any-sync/app"
"github.com/anytypeio/go-anytype-middleware/core/event"
"github.com/anytypeio/go-anytype-middleware/metrics"
"github.com/anytypeio/go-anytype-middleware/pb"
"github.com/anytypeio/go-anytype-middleware/pkg/lib/logging"
grpc_middleware "github.com/grpc-ecosystem/go-grpc-middleware"
grpc_zap "github.com/grpc-ecosystem/go-grpc-middleware/logging/zap"
grpc_prometheus "github.com/grpc-ecosystem/go-grpc-prometheus"
@ -28,6 +25,11 @@ import (
"github.com/opentracing/opentracing-go"
"google.golang.org/grpc"
"github.com/anytypeio/go-anytype-middleware/core/event"
"github.com/anytypeio/go-anytype-middleware/metrics"
"github.com/anytypeio/go-anytype-middleware/pb"
"github.com/anytypeio/go-anytype-middleware/pkg/lib/logging"
"github.com/anytypeio/go-anytype-middleware/core"
"github.com/anytypeio/go-anytype-middleware/pb/service"
@ -47,7 +49,6 @@ func main() {
var webaddr string
fmt.Printf("mw grpc: %s\n", app.VersionDescription())
logging.ApplyLevelsFromEnv()
if len(os.Args) > 1 {
addr = os.Args[1]
if len(os.Args) > 2 {
@ -117,15 +118,15 @@ func main() {
return true
}
grpcLogger := logging.Logger("grpc")
grpcLogger := logging.LoggerNotSugared("grpc")
unaryInterceptors = append(unaryInterceptors, grpc_zap.UnaryServerInterceptor(grpcLogger.Desugar()))
streamInterceptors = append(streamInterceptors, grpc_zap.StreamServerInterceptor(grpcLogger.Desugar()))
unaryInterceptors = append(unaryInterceptors, grpc_zap.UnaryServerInterceptor(grpcLogger))
streamInterceptors = append(streamInterceptors, grpc_zap.StreamServerInterceptor(grpcLogger))
if grpcDebug > 1 {
unaryInterceptors = append(unaryInterceptors, grpc_zap.PayloadUnaryServerInterceptor(grpcLogger.Desugar(), decider))
unaryInterceptors = append(unaryInterceptors, grpc_zap.PayloadUnaryServerInterceptor(grpcLogger, decider))
}
if grpcDebug > 2 {
streamInterceptors = append(streamInterceptors, grpc_zap.PayloadStreamServerInterceptor(grpcLogger.Desugar(), decider))
streamInterceptors = append(streamInterceptors, grpc_zap.PayloadStreamServerInterceptor(grpcLogger, decider))
}
}

18
go.mod
View file

@ -7,7 +7,7 @@ require (
github.com/PuerkitoBio/goquery v1.8.0
github.com/VividCortex/ewma v1.2.0
github.com/adrium/goheif v0.0.0-20230113233934-ca402e77a786
github.com/anytypeio/any-sync v0.0.15
github.com/anytypeio/any-sync v0.0.18-0.20230306212632-3693218fc53e
github.com/anytypeio/go-naturaldate/v2 v2.0.1
github.com/anytypeio/go-slip10 v0.0.0-20200330112030-a352ca8495e4
github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de
@ -25,7 +25,6 @@ require (
github.com/dsoprea/go-jpeg-image-structure/v2 v2.0.0-20210512043942-b434301c6836
github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8
github.com/go-shiori/go-readability v0.0.0-20220215145315-dd6828d2f09b
github.com/gobwas/glob v0.2.3
github.com/goccy/go-graphviz v0.1.0
github.com/gogo/protobuf v1.3.2
github.com/gogo/status v1.1.0
@ -53,10 +52,9 @@ require (
github.com/ipfs/go-ipld-format v0.4.0
github.com/ipfs/go-ipns v0.3.0
github.com/ipfs/go-log v1.0.5
github.com/ipfs/go-log/v2 v2.5.1
github.com/ipfs/go-merkledag v0.10.0
github.com/ipfs/go-path v0.3.0
github.com/ipfs/go-unixfs v0.4.3
github.com/ipfs/go-unixfs v0.4.4
github.com/ipfs/interface-go-ipfs-core v0.8.1
github.com/jsummers/gobmp v0.0.0-20151104160322-e2ba15ffa76e
github.com/kelseyhightower/envconfig v1.4.0
@ -94,9 +92,9 @@ require (
go.uber.org/zap v1.24.0
golang.org/x/exp v0.0.0-20230105202349-8879d0199aa3
golang.org/x/image v0.0.0-20211028202545-6944b10bf410
golang.org/x/net v0.7.0
golang.org/x/net v0.8.0
golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b
golang.org/x/text v0.7.0
golang.org/x/text v0.8.0
google.golang.org/grpc v1.47.0
gopkg.in/Graylog2/go-gelf.v2 v2.0.0-20180125164251-1832d8546a9f
gopkg.in/yaml.v2 v2.4.0
@ -159,6 +157,7 @@ require (
github.com/go-shiori/dom v0.0.0-20210627111528-4e4722cd0d65 // indirect
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 // indirect
github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b // indirect
github.com/gobwas/glob v0.2.3 // indirect
github.com/godbus/dbus/v5 v5.1.0 // indirect
github.com/gogo/googleapis v1.3.1 // indirect
github.com/gogs/chardet v0.0.0-20191104214054-4b6791f73a28 // indirect
@ -194,6 +193,7 @@ require (
github.com/ipfs/go-ipfs-util v0.0.2 // indirect
github.com/ipfs/go-ipld-legacy v0.1.1 // indirect
github.com/ipfs/go-libipfs v0.3.0 // indirect
github.com/ipfs/go-log/v2 v2.5.1 // indirect
github.com/ipfs/go-metrics-interface v0.0.1 // indirect
github.com/ipfs/go-peertaskqueue v0.8.0 // indirect
github.com/ipfs/go-verifcid v0.0.2 // indirect
@ -273,10 +273,10 @@ require (
go.uber.org/dig v1.15.0 // indirect
go.uber.org/fx v1.18.2 // indirect
golang.org/x/crypto v0.5.0 // indirect
golang.org/x/mod v0.7.0 // indirect
golang.org/x/mod v0.8.0 // indirect
golang.org/x/sync v0.1.0 // indirect
golang.org/x/sys v0.5.0 // indirect
golang.org/x/tools v0.3.0 // indirect
golang.org/x/sys v0.6.0 // indirect
golang.org/x/tools v0.6.0 // indirect
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
google.golang.org/appengine v1.6.7 // indirect
google.golang.org/genproto v0.0.0-20220114231437-d2e6a121cae0 // indirect

28
go.sum
View file

@ -85,8 +85,8 @@ github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYU
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
github.com/anytypeio/amplitude-go v0.0.0-20211130222238-8d16496a9b31 h1:fCXBjRAxXq4pKyfH8xmYPfjL/E6v5zTTxYrIKDz8ufw=
github.com/anytypeio/amplitude-go v0.0.0-20211130222238-8d16496a9b31/go.mod h1:uX6FcwR+wTQWzFszLXQxeKfNeittg1408V7pVAtLKqQ=
github.com/anytypeio/any-sync v0.0.15 h1:HJlW1VCOuwfDn+sxOrcwPAZ2LZojLn+PlaaixzaWsoQ=
github.com/anytypeio/any-sync v0.0.15/go.mod h1:jUu8YIgJAHUV+YR9bD5IXwM0DgJHr3FeYe84X2XLFkg=
github.com/anytypeio/any-sync v0.0.18-0.20230306212632-3693218fc53e h1:BV4+9QY8qOHZRWuurZSKUuEKo8bv8UaS+CV5GfLCSYE=
github.com/anytypeio/any-sync v0.0.18-0.20230306212632-3693218fc53e/go.mod h1:dZDvctmda+TlONGCX0+IHdnew2ckg7NIkIUUcVdRPPo=
github.com/anytypeio/go-chash v0.0.2 h1:BSpyMC3HXNkf2eosQrHM4svov0DrvxL9tb4gnHbdmbA=
github.com/anytypeio/go-chash v0.0.2/go.mod h1:G+R6q7jYgNa52NqcRhnNm28pogfWW+cuHtgBktrc2QA=
github.com/anytypeio/go-ds-badger3 v0.3.1-0.20221103102622-3233d4e13cb8 h1:LC9w0M0SbA5VuZeBtUdq+uR4mdjbJhxurNtovmRiOrU=
@ -717,8 +717,8 @@ github.com/ipfs/go-peertaskqueue v0.7.0/go.mod h1:M/akTIE/z1jGNXMU7kFB4TeSEFvj68
github.com/ipfs/go-peertaskqueue v0.8.0 h1:JyNO144tfu9bx6Hpo119zvbEL9iQ760FHOiJYsUjqaU=
github.com/ipfs/go-peertaskqueue v0.8.0/go.mod h1:cz8hEnnARq4Du5TGqiWKgMr/BOSQ5XOgMOh1K5YYKKM=
github.com/ipfs/go-unixfs v0.2.4/go.mod h1:SUdisfUjNoSDzzhGVxvCL9QO/nKdwXdr+gbMUdqcbYw=
github.com/ipfs/go-unixfs v0.4.3 h1:EdDc1sNZNFDUlo4UrVAvvAofVI5EwTnKu8Nv8mgXkWQ=
github.com/ipfs/go-unixfs v0.4.3/go.mod h1:TSG7G1UuT+l4pNj91raXAPkX0BhJi3jST1FDTfQ5QyM=
github.com/ipfs/go-unixfs v0.4.4 h1:D/dLBOJgny5ZLIur2vIXVQVW0EyDHdOMBDEhgHrt6rY=
github.com/ipfs/go-unixfs v0.4.4/go.mod h1:TSG7G1UuT+l4pNj91raXAPkX0BhJi3jST1FDTfQ5QyM=
github.com/ipfs/go-unixfsnode v1.1.2/go.mod h1:5dcE2x03pyjHk4JjamXmunTMzz+VUtqvPwZjIEkfV6s=
github.com/ipfs/go-verifcid v0.0.1/go.mod h1:5Hrva5KBeIog4A+UpqlaIU+DEstipcJYQQZc0g37pY0=
github.com/ipfs/go-verifcid v0.0.2 h1:XPnUv0XmdH+ZIhLGKg6U2vaPaRDXb9urMyNVCE7uvTs=
@ -1597,8 +1597,8 @@ golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzB
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.7.0 h1:LapD9S96VoQRhi/GrNTqeBJFrUjs5UHCAtTlgwA5oZA=
golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8=
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@ -1661,8 +1661,8 @@ golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qx
golang.org/x/net v0.0.0-20210916014120-12bc252f5db8/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g=
golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ=
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
@ -1771,8 +1771,8 @@ golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
@ -1784,8 +1784,8 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68=
golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
@ -1846,8 +1846,8 @@ golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4f
golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.3.0 h1:SrNbZl6ECOS1qFzgTdQfWXZM9XBkiA6tkFrH9YSTPHM=
golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k=
golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM=
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=

View file

@ -113,3 +113,15 @@ func (gs *gelfSink) SetAccount(account string) {
defer gs.Unlock()
gs.account = account
}
func SetVersion(version string) {
gelfSinkWrapper.SetVersion(version)
}
func SetHost(host string) {
gelfSinkWrapper.SetHost(host)
}
func SetAccount(account string) {
gelfSinkWrapper.SetAccount(account)
}

View file

@ -2,16 +2,13 @@ package logging
import (
"fmt"
"github.com/cheggaaa/mb"
"net/url"
"os"
"path/filepath"
"strings"
"sync"
"time"
"github.com/gobwas/glob"
logging "github.com/ipfs/go-log/v2"
"github.com/anytypeio/any-sync/app/logger"
"github.com/cheggaaa/mb"
"go.uber.org/zap"
"gopkg.in/Graylog2/go-gelf.v2/gelf"
)
@ -19,51 +16,14 @@ import (
const graylogHost = "graylog.anytype.io:6888"
const graylogScheme = "gelf+ssl"
var log = logging.Logger("anytype-logger")
var DefaultLogLevel = logging.LevelError
var logLevelsStr string
var gelfSinkWrapper gelfSink
var m = sync.Mutex{}
var defaultCfg = logging.Config{
Format: logging.JSONOutput,
Level: logging.LevelDebug,
Stderr: false,
Stdout: true,
URL: graylogScheme + "://" + graylogHost,
var defaultCfg = logger.Config{
Production: false,
DefaultLevel: "WARN",
}
func getLoggingConfig() logging.Config {
cfg := defaultCfg
if os.Getenv("ANYTYPE_LOG_NOGELF") == "1" {
// set default format to colored text
cfg.Format = logging.ColorizedOutput
cfg.URL = ""
}
var format string
if v := os.Getenv("ANYTYPE_LOG_FMT"); v != "" {
format = v
} else if v := os.Getenv("GO_LOG_FMT"); v != "" {
// support native ipfs logger env var
format = v
}
switch format {
case "color":
cfg.Format = logging.ColorizedOutput
case "nocolor":
cfg.Format = logging.PlaintextOutput
case "json":
cfg.Format = logging.JSONOutput
}
return cfg
}
func init() {
func registerGelfSink(config *logger.Config) {
gelfSinkWrapper.batch = mb.New(1000)
tlsWriter, err := gelf.NewTLSWriter(graylogHost, nil)
if err != nil {
@ -79,12 +39,7 @@ func init() {
// init tlsWriter outside to make sure it is available
return &gelfSinkWrapper, nil
})
if err != nil {
log.Error("failed to register zap sink", err.Error())
}
cfg := getLoggingConfig()
logging.SetupLogging(cfg)
config.AddOutputPaths = append(config.AddOutputPaths, graylogScheme+"://")
}
type LWrapper struct {
@ -96,112 +51,44 @@ func (l *LWrapper) Warningf(template string, args ...interface{}) {
}
func Logger(system string) *LWrapper {
logger := logging.Logger(system)
m.Lock()
setSubsystemLevels()
m.Unlock()
return &LWrapper{logger.SugaredLogger}
lg := logger.NewNamed(system)
return &LWrapper{*(lg.Sugar())}
}
func ApplyLevels(str string) {
m.Lock()
logLevelsStr = str
setSubsystemLevels()
m.Unlock()
func LoggerNotSugared(system string) *zap.Logger {
lg := logger.NewNamed(system)
return lg.Logger
}
func ApplyLevelsFromEnv() {
ApplyLevels(os.Getenv("ANYTYPE_LOG_LEVEL"))
}
func RefreshSubsystemLevels() {
m.Lock()
setSubsystemLevels()
m.Unlock()
}
func setClientSpecificLogLevels() {
// intentionally ignore errors here, cause some subsystem may be not ready yet
_ = logging.SetLogLevel("anytype-threadqueue", "info")
}
func setSubsystemLevels() {
logLevels := make(map[string]string)
if logLevelsStr != "" {
for _, level := range strings.Split(logLevelsStr, ";") {
parts := strings.Split(level, "=")
var subsystemPattern glob.Glob
var level string
if len(parts) == 1 {
subsystemPattern = glob.MustCompile("anytype-*")
level = parts[0]
} else if len(parts) == 2 {
var err error
subsystemPattern, err = glob.Compile(parts[0])
if err != nil {
log.Errorf("failed to parse glob pattern '%s': %w", parts[1], err)
continue
}
level = parts[1]
}
for _, subsystem := range logging.GetSubsystems() {
if subsystemPattern.Match(subsystem) {
logLevels[subsystem] = level
}
}
func LevelsFromStr(s string) map[string]string {
levels := make(map[string]string)
for _, kv := range strings.Split(s, ";") {
strings.TrimSpace(kv)
parts := strings.Split(kv, "=")
var key, value string
if len(parts) == 1 {
key = "*"
value = parts[0]
levels["*"] = parts[0]
} else if len(parts) == 2 {
key = parts[0]
value = parts[1]
}
}
if len(logLevels) == 0 {
logging.SetAllLoggers(DefaultLogLevel)
setClientSpecificLogLevels()
return
}
subsystems := logging.GetSubsystems()
for subsystemPattern, level := range logLevels {
lvl, err := logging.LevelFromString(level)
_, err := zap.ParseAtomicLevel(value)
if err != nil {
log.Errorf("logging: invalid level for %s: %s", subsystemPattern, level)
fmt.Printf("Can't parse log level %s: %s\n", parts[0], err.Error())
continue
}
if subsystemPattern == "*" {
logging.SetAllLoggers(lvl)
continue
}
for _, subsystem := range subsystems {
matched, err := filepath.Match(subsystemPattern, subsystem)
if err != nil {
log.Errorf("logging: invalid subsystem pattern: %s", subsystemPattern)
continue
}
if !matched {
continue
}
err = logging.SetLogLevel(subsystem, level)
if err != nil {
if err != logging.ErrNoSuchLogger {
// it returns ErrNoSuchLogger when we don't initialised this subsystem yet
log.Errorf("subsystem %s has incorrect log level '%s': %w", subsystem, level, err)
}
}
}
levels[key] = value
}
return levels
}
func SetVersion(version string) {
gelfSinkWrapper.SetVersion(version)
}
func init() {
cfg := defaultCfg
registerGelfSink(&cfg)
cfg.NamedLevels = LevelsFromStr(os.Getenv("ANYTYPE_LOG_LEVEL"))
cfg.ApplyGlobal()
func SetHost(host string) {
gelfSinkWrapper.SetHost(host)
}
func SetAccount(account string) {
gelfSinkWrapper.SetAccount(account)
}

View file

@ -4,7 +4,7 @@ import (
"github.com/anytypeio/any-sync/commonspace/object/acl/liststorage"
"github.com/anytypeio/any-sync/commonspace/object/tree/treechangeproto"
storage "github.com/anytypeio/any-sync/commonspace/object/tree/treestorage"
spacestorage "github.com/anytypeio/any-sync/commonspace/spacestorage"
"github.com/anytypeio/any-sync/commonspace/spacestorage"
"github.com/anytypeio/any-sync/commonspace/spacesyncproto"
"github.com/dgraph-io/badger/v3"
)
@ -207,6 +207,16 @@ func (s *spaceStorage) TreeDeletedStatus(id string) (status string, err error) {
return
}
func (s *spaceStorage) SetSpaceDeleted() error {
// todo: not implemented
return nil
}
func (s *spaceStorage) IsSpaceDeleted() (bool, error) {
// todo: not implemented
return false, nil
}
func (s *spaceStorage) Close() (err error) {
return nil
}