glog

package module
v0.0.0-...-a76fa80 Latest Latest
Warning

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

Go to latest
Published: Oct 28, 2018 License: MIT Imports: 16 Imported by: 0

README

glog

日志库 实现了 文件按天按大小分割 配置文件热更新 可同时写入多个文件方便接入其他日志系统

配置文件使用json

{
    "Layouts":
    [
        {
            "Serializer":{"Type":"json"},
            "Target":{"Type":"file"}
        }
    ],
    "Async":false
}

使用Layouts数组来支持多个文件的输出
配合file Target字段的MinLevel 和MaxLevel可以把 不同级别的日志输出到不同的文件
file Target支持的字段参照target.go createFileTarget

通过NewManager->GetLogger来获取logger 就可以打印日志 通常1个程序只需要1个manager

Serializer 目前支持plain 和json
自定义Serializer
1.实现Serializer
2.RegisterSerializer(key, Serializer)
3.在配置文件中Serializer的Type字段中指定同样的key
4.NewManager

Target 目前支持file console
fileTarget 使用异步写入日志 Async字段为true时 异步序列化 否则同步序列化
自定义Target
1.实现TargetCtor
2.RegisterTarget(key, TargetCtor)
3.在配置文件中Target的Type字段指定同样的key
4.NewManager

Documentation

Overview

Package glog 学习自FLogger https://github.com/cyfonly/FLogger.git

Index

Constants

View Source
const (
	EveryLevel = iota
	TraceLevel
	DebugLevel
	InfoLevel
	WarnLevel
	ErrorLevel
	FatalLevel
)

log的等级

Variables

This section is empty.

Functions

func NewGLoggerFactory

func NewGLoggerFactory(path string) glogger.Factory

NewGLoggerFactory 返回1个glogger.Factory

func RegisterSerializer

func RegisterSerializer(name string, serial Serializer)

RegisterSerializer 添加一个序列化 在配置文件里指定相同的name 则可以调用这个序列化

func RegisterTarget

func RegisterTarget(name string, ctor TargetCtor)

RegisterTarget 添加一个Target

Types

type ConfigFile

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

ConfigFile 文件配置管理器

func (*ConfigFile) Load

func (file *ConfigFile) Load(path string) (lc *LogConfig, e error)

Load 载入配置

func (*ConfigFile) StartMonitor

func (file *ConfigFile) StartMonitor(delegate func(config *LogConfig))

StartMonitor 监控文件变化

func (*ConfigFile) StopMonitor

func (file *ConfigFile) StopMonitor()

StopMonitor 停止监控文件变化

type DefaultSerializer

type DefaultSerializer struct {
}

DefaultSerializer 默认的序列化接口

func (*DefaultSerializer) Encode

func (ds *DefaultSerializer) Encode(e *LogEvent) []byte

Encode 实现Serialization

type GLoggerFactory

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

GLoggerFactory 实现gloggerFactory

func (*GLoggerFactory) GetLogger

func (gf *GLoggerFactory) GetLogger(name string) glogger.GLogger

GetLogger implement GLogger

type JSONSerializer

type JSONSerializer struct {
}

JSONSerializer json序列化接口

func (*JSONSerializer) Encode

func (js *JSONSerializer) Encode(e *LogEvent) []byte

Encode 实现Serialization

type Layout

type Layout struct {
	Target     Target
	Serializer Serializer
}

Layout 用于内部描述

type LogConfig

type LogConfig struct {
	Async   bool
	Layouts []*Layout //只读
}

LogConfig 文件配置

type LogEvent

type LogEvent struct {
	Properties
	Level      LogLevel
	LevelDesc  string //level的文本描述
	Name       string
	Format     string //format或者message
	Args       []interface{}
	StackTrace string
	Time       string
}

LogEvent log的具体内容

type LogLevel

type LogLevel int

LogLevel log的等级

type Logger

type Logger interface {
	glogger.GLogger
	WriteEvent(e LogEvent) //也许应该用*LogEvent
}

Logger 日志打印接口 方便替换为第三方log

type Manager

type Manager interface {
	GetLogger(name string) Logger
	WriteEvent(event LogEvent)
	Close()
}

Manager 接口

func New

func New(path string) Manager

New 返回1个Manager对象 通常1个程序1个manager就可以了

type Properties

type Properties map[string]interface{}

Properties LogEvent属性 方便添加自定义字段

type Serializer

type Serializer interface {
	Encode(e *LogEvent) []byte
}

Serializer 序列化接口

type Target

type Target interface {
	Name() string
	MaxLevel() LogLevel
	MinLevel() LogLevel
	Write(event *LogEvent, sr Serializer) //manager 可能在多个routine调用
	Overflow() bool                       //manager保证同一时刻只有1个routine调用
	Flush()                               //manager保证同一时刻只有1个routine调用 manager保证 Overflow()和Flush() 在同一个routine中调用
}

Target 日志文件写入

type TargetCtor

type TargetCtor func(config map[string]interface{}) Target

TargetCtor 实现自定义Target

Jump to

Keyboard shortcuts

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