gostashlg

package module
v1.0.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 20, 2024 License: GPL-3.0 Imports: 11 Imported by: 0

README

gostashlg

Logger integrated with Logstash base on kpango/glg

Instalasi

go get github.com/randyardiansyah25/gostashlg

Struktur Umum

Struktur Log
type Fields struct {
    IdentifierName string      `json:"service"`
    Timestamp      string      `json:"service_timestamp"`
    Level          Level       `json:"level"`
    Event          string      `json:"event"`
    Message        string      `json:"log_message"`
    Data           interface{} `json:"data,omitempty"`
}

Merupakan struktur objek log yang akan ditulis, baik ke file atau dikirim ke logstash

  • Attribute IdentifierName digunakan sebagian identitas nama service untuk dikenali harus dikenali padak logstash sebagai filter pembuatan index di elasticsearch

  • Attribute Timestamp digunakan sebagai tanggal dan waktu log dibuat, format TIMESTAMP_ISO8601 atau yyyy-MM-dd HH:mm:ss

  • Attribute Level digunakan sebagai level dari log.

  • Attribute Event digunakan sebagai informasi aktivitas pada saat log dibuat. Bisa berupa path pada endpoint, modul atau function di source code atau aktivitasi lain

  • Attribute Message digunakan sebagai informasi pesan log yang dibuat

  • Attribute Data digunakan untuk informasi detail dari log, bisa berisi text atau objek

Const
type Level string

const (
    LOG   Level = "LOG"
    WARN  Level = "WARN"
    ERROR Level = "ERROR"
    INFO  Level = "INFO"
    DEBUG Level = "DEBUG"
    PRINT Level = "PRINT"
    TRACE Level = "TRACE"
    FAIL  Level = "FAIL"
)

Konstanta untuk digunakan sebagai value Level pada struktur Fields

Template

Template merupakan fitur yang dapat digunakan untuk mencetak log secara dinamis. Template ini memanfaatkan package html/template di golang. Untuk detail, silahkan pelajari di dokumentasi dari package tersebut

type Template struct {
 pattern map[Level]string
}

func (t *Template) Add(level Level, template string) *Template {
 t.pattern[level] = template
 return t
}

Struktur ini digunakan untuk mendefinisikan template log yang dicetak ke layar berdasarkan Level. Untuk menambahkan template berdasarkan level, bisa menggunakan fungsi Add()

Contoh
gostashlg.NewTemplate().
  Add(gostashlg.LOG, "{{.Data.Type}}, FROM:4 {{.Data.RemoteAddr}}, {{.Event}}, {{.Message}}, Data:\n{{.Data.Body}}").
  Add(gostashlg.INFO, "{{.Data.Type}}, {{.Event}}, {{.Message}}, Data:\n{{.Data.Body}}")

Jika template tidak didefinisikan, maka log yang dibuat akan menggunakan Default template yang telah disediakan. Template default sebagai berikut:

{{.Event}}, {{.Message}}, {{.Data}}
Contoh saat log dicetak dilayar
2024-08-08 11:20:46 [LOG]: Simpan User, Sukses menyimpan user, User-ID: 100 Name: Mr. Smith

Secara default, Timestamp dan Level akan selalu dicetak, sehingga place holder yang dibuat untuk custom template, tidak perlu menambahkan 2 field tersebut

Method
func UseDefault() (l LoggerEngine, e error)

Digunakan pertama kali untuk membuat objek log menggunakan template default.

func UseDefine(template *Template) (l LoggerEngine, e error)

Digunakan pertama kali untuk membuat objek log, dengan mengirimkan parameter template custom yang telah didefinisikan

Return :

  • LoggerEngine berupa objek dari yang digunakan selanjutnya untuk mencetak log.
  • error bernilai error jika terjadi kesalahan pada saat method tersebut gagal saat melakukan parsing template
func (l *LoggerEngine) Write(f Fields)

Method ini digunakan untuk melakukan perintah mencatat log dan secara otomatis, log akan dikirim ke logstash. f Fields berupa objek dari struktur Fields yang sudah didefinisikan

func (l *LoggerEngine) WriteOnly(f Fields)

Method ini digunakan untuk melakukan perintah mencatat log tetap tidak mengirimkan ke logstash. f Fields berupa objek dari struktur Fields yang sudah didefinisikan

Environment

Untuk dapat memanfaatkan gostashlg agar secara otomatis mengirimkan log ke logstash, buat konfigurasi logstash.host di environment variable yang berisi url dari logstash. Anda juga dapat melakukan ini dengan membuat statement di code program dengan perintah untuk menambah environment variables tersebut. Sebagai contoh, lihat dibawah berikut:

err := os.Setenv("logstash.host", "http://localhost:5044")
if err != nil {
    fmt.Println("Error setting environment variable:", err)
    return
}

Documentation

Index

Constants

View Source
const (
	FORMAT_YMD = "20060102"
)
View Source
const (
	LogTemplate = "{{.Event}}, {{.Message}}, {{.Data}}"
)

Variables

This section is empty.

Functions

func NewTimestamp

func NewTimestamp() string

Types

type Fields

type Fields struct {
	IdentifierName string      `json:"service"`
	Timestamp      string      `json:"service_timestamp"`
	Level          Level       `json:"level"`
	Event          string      `json:"event"`
	Message        string      `json:"log_message"`
	Data           interface{} `json:"data,omitempty"`
}

func NewFields

func NewFields() *Fields

func (*Fields) Get

func (f *Fields) Get() Fields

func (*Fields) SetData

func (f *Fields) SetData(data interface{}) *Fields

func (*Fields) SetEvent

func (f *Fields) SetEvent(e string) *Fields

func (*Fields) SetIdentifierName

func (f *Fields) SetIdentifierName(id string) *Fields

func (*Fields) SetLevel

func (f *Fields) SetLevel(level Level) *Fields

func (*Fields) SetMessage

func (f *Fields) SetMessage(msg string) *Fields

type Level

type Level string
const (
	LOG   Level = "LOG"
	WARN  Level = "WARN"
	ERROR Level = "ERROR"
	INFO  Level = "INFO"
	DEBUG Level = "DEBUG"
	PRINT Level = "PRINT"
	TRACE Level = "TRACE"
	FAIL  Level = "FAIL"
)

type LoggerEngine

type LoggerEngine struct {
	LastSuffix string
	// contains filtered or unexported fields
}

func UseDefault

func UseDefault() (l LoggerEngine, e error)

func UseDefine

func UseDefine(template *Template) (l LoggerEngine, e error)

func (*LoggerEngine) Write

func (l *LoggerEngine) Write(f Fields)

func (*LoggerEngine) WriteOnly added in v1.0.2

func (l *LoggerEngine) WriteOnly(f Fields)

type Template

type Template struct {
	// contains filtered or unexported fields
}

func NewTemplate

func NewTemplate() (t *Template)

func (*Template) Add

func (t *Template) Add(level Level, template string) *Template

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL