Date: Fri, 29 Mar 2024 13:36:48 +0800 (CST) Message-ID: <351157401.375.1711690608494@localhost.localdomain> Subject: Exported From Confluence MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_Part_374_103535493.1711690608493" ------=_Part_374_103535493.1711690608493 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Location: file:///C:/exported.html
Writer
=E6=8E=A5=E5=8F=A3=E6=98=AF=E6=9C=80=E5=BA=95=E5=B1=
=82=E7=9A=84IO
=E5=86=99=E5=85=A5=E6=8E=A5=E5=8F=A3=EF=BC=8C=E5=
=A6=82=E6=9E=9C=E4=B8=9A=E5=8A=A1=E9=9C=80=E8=A6=81=E8=87=AA=E5=AE=9A=E4=B9=
=89=E6=97=A5=E5=BF=97=E5=86=85=E5=AE=B9=E6=89=93=E5=8D=B0=EF=BC=8C=E5=BB=BA=
=E8=AE=AE=E4=BD=BF=E7=94=A8Handler
=E7=89=B9=E6=80=A7=EF=BC=8C=
=E5=8F=82=E8=80=83=E7=AB=A0=E8=8A=82=EF=BC=9A=E6=97=A5=E5=BF=97=E7=BB=84=E4=BB=B6-Handler
Writer
=E6=8E=A5=E5=8F=A3glog
=E6=A8=A1=E5=9D=97=E5=AE=9E=E7=8E=B0=E4=BA=86=E6=A0=87=
=E5=87=86=E8=BE=93=E5=87=BA=E4=BB=A5=E5=8F=8A=E6=96=87=E4=BB=B6=E8=BE=93=E5=
=87=BA=E7=9A=84=E6=97=A5=E5=BF=97=E5=86=85=E5=AE=B9=E6=89=93=E5=8D=B0=E3=80=
=82=E5=BD=93=E7=84=B6=EF=BC=8C=E5=BC=80=E5=8F=91=E8=80=85=E4=B9=9F=E5=8F=AF=
=E4=BB=A5=E9=80=9A=E8=BF=87=E8=87=AA=E5=AE=9A=E4=B9=89io.Writer
=E6=8E=A5=E5=8F=A3=E5=AE=9E=E7=8E=B0=E8=87=AA=E5=AE=9A=E4=B9=89=E7=9A=84=
=E6=97=A5=E5=BF=97=E5=86=85=E5=AE=B9=E8=BE=93=E5=87=BA=E3=80=82io.Wri=
ter
=E6=98=AF=E6=A0=87=E5=87=86=E5=BA=93=E6=8F=90=E4=BE=9B=E7=9A=84=
=E5=86=85=E5=AE=B9=E8=BE=93=E5=87=BA=E6=8E=A5=E5=8F=A3=EF=BC=8C=E5=85=B6=E5=
=AE=9A=E4=B9=89=E5=A6=82=E4=B8=8B=EF=BC=9A
type Writer interface { =09Write(p []byte) (n int, err error) }
=E6=88=91=E4=BB=AC=E5=8F=AF=E4=BB=A5=E9=80=9A=E8=BF=87SetWriter=E6=96=B9=E6=B3=95=E6=88=96=E8=80=85=E9=93=BE=E5=BC=8F=E6=96=B9=E6=B3=
=95
=E8=BE=93=E5=87=BA=EF=BC=8C=E5=BC=80=E5=8F=91=E8=80=85=E5=
=8F=AF=E4=BB=A5=E5=9C=A8=E8=AF=A5To
=E6=9D=A5=E5=AE=9E=E7=8E=B0=E8=87=AA=E5=AE=9A=E4=B9=89Writer
=E4=B8=AD=E5=AE=9E=E7=
=8E=B0=E5=AE=9A=E4=B9=89=E7=9A=84=E6=93=8D=E4=BD=9C=EF=BC=8C=E4=B9=9F=E5=8F=
=AF=E4=BB=A5=E5=9C=A8=E5=85=B6=E4=B8=AD=E6=95=B4=E5=90=88=E5=85=B6=E4=BB=96=
=E7=9A=84=E6=A8=A1=E5=9D=97=E5=8A=9F=E8=83=BD=E3=80=82
=E6=AD=A4=E5=A4=96=EF=BC=8Cglog.Logger
=E5=AF=B9=E8=B1=A1=E5=
=B7=B2=E7=BB=8F=E5=AE=9E=E7=8E=B0=E4=BA=86io.Writer
=E6=8E=A5=
=E5=8F=A3=EF=BC=8C=E5=9B=A0=E6=AD=A4=E5=BC=80=E5=8F=91=E8=80=85=E5=8F=AF=E4=
=BB=A5=E9=9D=9E=E5=B8=B8=E6=96=B9=E4=BE=BF=E5=9C=B0=E5=B0=86glog=E6=95=B4=E5=90=88=E4=BD=BF=E7=94=A8=E5=88=B0=E5=85=B6=E4=BB=96=E7=9A=84=
=E6=A8=A1=E5=9D=97=E4=B8=AD=E3=80=82
HOOK
=E5=9C=A8=E8=AF=A5=E7=A4=BA=E4=BE=8B=E4=B8=AD=EF=BC=8C=E6=88=91=E4=BB=AC=
=E5=AE=9E=E7=8E=B0=E4=BA=86=E4=B8=80=E4=B8=AA=E8=87=AA=E5=AE=9A=E4=B9=89=E7=
=9A=84Writer
=E5=AF=B9=E8=B1=A1MyWriter
=EF=BC=8C=
=E5=9C=A8=E8=AF=A5=E5=AF=B9=E8=B1=A1=E5=AE=9E=E7=8E=B0=E7=9A=84Writer=
=E6=8E=A5=E5=8F=A3=E4=B8=AD=E6=88=91=E4=BB=AC=E5=AF=B9=E6=97=A5=E5=
=BF=97=E5=86=85=E5=AE=B9=E8=BF=9B=E8=A1=8C=E5=88=A4=E6=96=AD=EF=BC=8C=E5=A6=
=82=E6=9E=9C=E5=87=BA=E7=8E=B0=E4=BA=86PANI
=E6=88=96=E8=80=85<=
code>FATA=E9=94=99=E8=AF=AF=EF=BC=8C=E9=82=A3=E4=B9=88=E8=A1=A8=E7=
=A4=BA=E6=98=AF=E9=9D=9E=E5=B8=B8=E4=B8=A5=E9=87=8D=E7=9A=84=E9=94=99=E8=AF=
=AF=EF=BC=8C=E8=AF=A5=E6=8E=A5=E5=8F=A3=E5=B0=86=E4=BC=9A=E7=AC=AC=E4=B8=80=
=E6=97=B6=E9=97=B4=E9=80=9A=E8=BF=87HTTP
=E6=8E=A5=E5=8F=A3=E5=
=91=8A=E7=9F=A5Monitor
=E7=9B=91=E6=8E=A7=E6=9C=8D=E5=8A=A1=E3=
=80=82=E9=9A=8F=E5=90=8E=E5=86=8D=E5=B0=86=E6=97=A5=E5=BF=97=E5=86=85=E5=AE=
=B9=E9=80=9A=E8=BF=87glog
=E6=A8=A1=E5=9D=97=E6=8C=89=E7=85=A7=
=E9=85=8D=E7=BD=AE=E5=86=99=E5=85=A5=E5=88=B0=E6=96=87=E4=BB=B6=E5=92=8C=E6=
=A0=87=E5=87=86=E8=BE=93=E5=87=BA=E3=80=82
package main import ( =09"context" =09"fmt" =09"github.com/gogf/gf/v2/frame/g" =09"github.com/gogf/gf/v2/net/ghttp" =09"github.com/gogf/gf/v2/os/glog" =09"github.com/gogf/gf/v2/text/gregex" ) type MyWriter struct { =09logger *glog.Logger } func (w *MyWriter) Write(p []byte) (n int, err error) { =09var ( =09=09s =3D string(p) =09=09ctx =3D context.Background() =09) =09if gregex.IsMatchString(`PANI|FATA`, s) { =09=09fmt.Println("SERIOUS ISSUE OCCURRED!! I'd better tell monitor in firs= t time!") =09=09g.Client().PostContent(ctx, "http://monitor.mydomain.com", s) =09} =09return w.logger.Write(p) } func main() { =09var ctx =3D context.Background() =09glog.SetWriter(&MyWriter{ =09=09logger: glog.New(), =09}) =09glog.Fatal(ctx, "FATAL ERROR") }
=E6=89=A7=E8=A1=8C=E5=90=8E=EF=BC=8C=E8=BE=93=E5=87=BA=E7=BB=93=E6=9E=9C= =E4=B8=BA=EF=BC=9A
SERIOUS= ISSUE OCCURRED!! I'd better tell monitor in first time! 2019-05-23 20:14:49.374 [FATA] FATAL ERROR Stack: 1. /Users/john/Workspace/Go/GOPATH/src/github.com/gogf/gf/v2/geg/os/glog/gl= og_writer_hook.go:27
graylog
=E5=81=87=E5=A6=82=E6=88=91=E4=BB=AC=E9=9C=80=E8=A6=81=E8=BE=93=E5=87=BA=
=E6=97=A5=E5=BF=97=E5=88=B0=E6=96=87=E4=BB=B6=E5=8F=8A=E6=A0=87=E5=87=86=E8=
=BE=93=E5=87=BA=EF=BC=8C=E5=B9=B6=E4=B8=94=E5=90=8C=E6=97=B6=E4=B9=9F=E9=9C=
=80=E8=A6=81=E8=BE=93=E5=87=BA=E6=97=A5=E5=BF=97=E5=88=B0Graylog=EF=BC=8C=E5=BE=88=E6=98=8E=E6=98=BE=E8=BF=99=E4=B8=AA=E4=B9=9F=E6=98=AF=
=E9=9C=80=E8=A6=81=E8=87=AA=E5=AE=9A=E4=B9=89
Writer
=E6=89=8D=
=E8=83=BD=E5=AE=9E=E7=8E=B0=E3=80=82=E5=BD=93=E7=84=B6=E5=90=8C=E7=90=86=EF=
=BC=8C=E6=88=91=E4=BB=AC=E4=B9=9F=E5=8F=AF=E4=BB=A5=E8=87=AA=E5=AE=9A=E4=B9=
=89=E8=BE=93=E5=87=BA=E5=88=B0=E5=85=B6=E4=BB=96=E7=9A=84=E6=97=A5=E5=BF=97=
=E6=94=B6=E9=9B=86=E7=BB=84=E4=BB=B6=E6=88=96=E8=80=85=E6=95=B0=E6=8D=AE=E5=
=BA=93=E4=B8=AD=E3=80=82
Graylog
=E6=98=AF=E4=B8=8EELK
=E5=8F=AF=E4=BB= =A5=E7=9B=B8=E6=8F=90=E5=B9=B6=E8=AE=BA=E7=9A=84=E4=B8=80=E6=AC=BE=E9=9B=86= =E4=B8=AD=E5=BC=8F=E6=97=A5=E5=BF=97=E7=AE=A1=E7=90=86=E6=96=B9=E6=A1=88=EF= =BC=8C=E6=94=AF=E6=8C=81=E6=95=B0=E6=8D=AE=E6=94=B6=E9=9B=86=E3=80=81=E6=A3= =80=E7=B4=A2=E3=80=81=E5=8F=AF=E8=A7=86=E5=8C=96Dashboard
=E3= =80=82
=E7=A4=BA=E4=BE=8B=E4=BB=A3=E7=A0=81=EF=BC=9A
package main import ( =09"context" =09"github.com/gogf/gf/v2/os/glog" =09"github.com/robertkowalski/graylog-golang" ) type MyGrayLogWriter struct { =09gelf *gelf.Gelf =09logger *glog.Logger } func (w *MyGrayLogWriter) Write(p []byte) (n int, err error) { =09w.gelf.Send(p) =09return w.logger.Write(p) } func main() { =09var ctx =3D context.Background() =09glog.SetWriter(&MyGrayLogWriter{ =09=09logger : glog.New(), =09=09gelf : gelf.New(gelf.Config{ =09=09=09GraylogPort : 80, =09=09=09GraylogHostname : "graylog-host.com", =09=09=09Connection : "wan", =09=09=09MaxChunkSizeWan : 42, =09=09=09MaxChunkSizeLan : 1337, =09=09}), =09}) =09glog.Println(ctx, "test log") }