Documentation ¶
Overview ¶
日志操作,能够分别处理不同的日志级别信息配置 info debug error warn ftal panic level out console file html mongodb email 使用说明: SFLogger struct{},首先先要了解什么是(SFLogger),是用于标识区分每个log信息的输出, 可以自定义分组标识和log标识。 日志标识(logTag): 主要作用区分每个不同的SFLogger对象进行输出的信息,最好是唯一的 日志组标识(logGroup): 主要作用是用于日志配置的使用,在一个日志分组中使用同样的配置操作。 如果可以直接使用全局的日志配置操作,全局日志的配置默认是输出控制台。 全局SFLogger的标识:logTag = "globalTag",logGroup = globalGroup SFLog.Info("操作信息:记录信息操作。") console out: 2013-10-31 12:12:55.871435 [info] ([globalGroup][globalTag][L16 github.com/slowfei/gosfcore/log.TestLogger]) 操作信息:记录信息操作。 也可以自定义一个日志标识然后结合日志的配置进行信息的输出,如果没有定义日志组,默认使用全局日志组的配置。 var log *SFLogger = NewLogger("logtag") or NewLoggerByGroup("logtag","logGroup") log.Info("操作信息:记录信息操作。") 信息会根据日志组的设置进行相应的输出。 配置文件加载: 使用LoadConfig(configPath string)指定配置文件路径进行加载,相对路径或绝对路径,相对路径以执行文件目录开始。 也可以使用LoadConfigByJson(jsonData []byte)指定json文本信息加载 配置加载是以覆盖形式进行操作,可以多次进行配置的加载,存储配置的结构(_sharedLogConfig)。 配置详解: Pattern Format(信息输出时的格式化操作): ${yyyy} 年 ${MM} 月 ${dd} 日 ${hh} 时 ${mm} 分 ${ss} 秒 ${SSS} 毫秒 ${LOG_GROUP} 分组标识 ${LOG_TAG} 日志标识 ${FILE_LINE} 调用函数的文件行 ${FILE_PATH} 调用函数的文件路径 ${FUNC_NAME} 函数名称(哪里调用就是那个函数) ${STACK} 堆栈信息 ${TARGET} 输出的目标例如 info、debug、error... ${MSG} 输出的信息,就是 SFLog.Info("这里是输出${MSG}的信息") 配置文件(千万要注意编写json的格式)
{ // 初始化需要实现的的Appender对象,如果未初始化则不会进行输出,所以在开始前需要确定需要输出的对象。 "InitAppenders":[ "console","file","email","html","mongodb" ], // 日志组的配置,包含多个日志组的配置信息 "LogGroups" :{ // 配置一个日志组 "groupName" :{ // 设置需要的Appender对象,如果未配置将不会进行输出 "Appender":[ "console","file" ], // 下面针对Appender对象配置特定的格式信息,如果nil或没有设置则使用Appender的默认设置 /* ------------console配置--------------- */ // 控制台输出的格式,具体可以查看Pattern Format "ConsolePattern":"${yyyy}-${MM}-${dd} ${mm}:${dd}:${ss}${SSSSSS} [${TARGET}] ([${LOG_GROUP}][${LOG_TAG}][L${FILE_LINE} ${FUNC_NAME}])\n${MSG}", /* ------------file配置--------------- */ // 文件名(可以输入时间格式) 默认"(ExceFileName)-${yyyy}-${MM}-${dd}.log" // 配置注意事项: // Name(FileName) "file-${yyyy}/${MM}/${dd}.log" error 如果包含"/"会以目录作为处理的,所以需要注意。 // "../file-${yyyy}-${MM}-${dd}.log" proper 可以使用相对路径来命名"/"是作为目录的操作, // 截取后面的文件名(file-${yyyy}-${MM}-${dd}.log) "FileName":"info-${yy}${MM}${dd}.log", // 文件存储路径, 默认执行文件目录 "FileSavePath":"", // 输出的格式,具体可以查看Pattern Format "FilePattern":"${yyyy}-${MM}-${dd} ${mm}:${dd}:${ss}${SSSSSS} [${TARGET}] ([${LOG_GROUP}][${LOG_TAG}][L${FILE_LINE} ${FUNC_NAME}])\n${MSG}", // 文件最大存储大小,默认5M "FileMaxSize":5242880, // 日志相同名称的最大数量,例如file(1).log...file(1000).log。默认1000,超出建立的数量将不会创建日志文件 "FileSameNameMaxNum":1000, /* ------------html配置--------------- */ // 注意事项与file配置的Name相同 "HtmlName":"log-${yy}${MM}${dd}.html", // 文件存储路径, 默认执行文件目录 "HtmlSavePath":"", // html title "HtmlTitle":"Log Info", // 时间格式需要注意没有${} "HtmlTimeFormat":"yyyy-MM-dd hh:mm", // 文件最大存储大小,默认3M "HtmlMaxSize":3145728, // 与file配置相同 "HtmlSameNameMaxNum":1000, /* ------------email配置--------------- */ // 不可为空,否则不进行输出 "EmailHost":"smtp.xxx.com", // 非空 "EmailUser":"xxx@gmail.com", // 非空 "EmailPassword":"123456", // 发送邮件显示的发送人名称 "EmailFromName":"slowfei", // 发送地址 "EmailTo":"xx@gmail.com;xx2@gmail.com", // 输出信息的格式,具体可以查看Pattern Format "EmailPattern":"${yyyy}-${MM}-${dd} ${mm}:${dd}:${ss}${SSSSSS} [${TARGET}] ([${LOG_GROUP}][${LOG_TAG}][L${FILE_LINE} ${FUNC_NAME}])\n${MSG}", // 邮件主题 "EmailSubject":"Golang Log Info", // 默认Content-Type: text/plain; charset=UTF-8 "EmailContentType":"Content-Type: text/plain; charset=UTF-8" // 控制当前日志组是否进行输出工作,如果为true则当前组不会进行信息的输出,默认可以不写为false "none":false, // 以上的分组配置均为默认配置 // 针对输出的目标进行配置,如果不编写则使用上面部分设置的默认配置信息。 // 需要注意的是,只要声明了目标的配置就不会取组的默认配置信息,目标配置大于默认配置。 "info":{ "Appender":[ "console" ], "ConsolePattern":"${yyyy}-${MM}-${dd} ${mm}:${dd} ${MSG}" }, "debug":{ "Appender":[ "file" ], "FileName":"info-${yy}-${MM}-${dd}.log", "FileSavePath":"", "FilePattern":"${yyyy}-${MM}-${dd} ${mm}:${dd}:${ss}${SSSSSS} [${TARGET}] ([${LOG_GROUP}][${LOG_TAG}][L${FILE_LINE} ${FUNC_NAME}])\n${MSG}", "FileMaxSize":5242880" "FileSameNameMaxNum":1000 }, "error":{ "Appender":[ "html" ], "HtmlName":"log-${yy}${MM}${dd}.html", "HtmlSavePath":"", "HtmlTitle":"LogInfo", "HtmlTimeFormat":"yyyy-MM-dd hh:mm", "HtmlMaxSize":3145728, "HtmlSameNameMaxNum":1000, }, "warn":{ "Appender":[ "email" ], "EmailHost":"smtp.xxx.com", "EmailUser":"xxx@gmail.com", "EmailPassword":"123456", "EmailFromName":"slowfei", "EmailTo":"xx@gmail.com;xx2@gmail.com", "EmailPattern":"${yyyy}-${MM}-${dd} ${mm}:${dd}:${ss}${SSSSSS} [${TARGET}] ([${LOG_GROUP}][${LOG_TAG}][L${FILE_LINE} ${FUNC_NAME}])\n${MSG}", "EmailSubject":"Golang Log Info", "EmailContentType":"Content-Type: text/plain; charset=UTF-8" }, "fatal":{ // 配置与info都一致。 }, "panic":{ // 配置与info都一致。 } } } } appender interface 日志的配置文件加载操作
console handle
email handle
file handle
html handle
Index ¶
- Constants
- Variables
- func Debug(format string, v ...interface{}) string
- func Error(format string, v ...interface{}) string
- func Fatal(format string, v ...interface{}) string
- func Info(format string, v ...interface{}) string
- func LoadConfig(configPath string) error
- func LoadConfigByJson(jsonData []byte) error
- func Panic(format string, v ...interface{}) string
- func StartLogManager(logChannelSize int)
- func Warn(format string, v ...interface{}) string
- type Appender
- type AppenderConsole
- type AppenderConsoleConfig
- type AppenderEmail
- type AppenderEmailConfig
- type AppenderFile
- type AppenderFileConfig
- type AppenderHtml
- type AppenderHtmlConfig
- type AppenderMongodbConfig
- type AppenderNoneConfig
- type LogConfig
- type LogManager
- type LogMsg
- type LogTarget
- type MainLogConfig
- type SFLogger
- func (l *SFLogger) Debug(format string, v ...interface{}) string
- func (l *SFLogger) Error(format string, v ...interface{}) string
- func (l *SFLogger) Fatal(format string, v ...interface{}) string
- func (l *SFLogger) Info(format string, v ...interface{}) string
- func (l *SFLogger) Panic(format string, v ...interface{}) string
- func (l *SFLogger) Warn(format string, v ...interface{}) string
- type TargetConfigInfo
Constants ¶
const ( // separator LOG_SEPARATOR = "_" // global group log config KEY_GLOBAL_GROUP_LOG_CONFIG = "globalGroup" // defalut pattern DEFAULT_PATTERN = "${yyyy}-${MM}-${dd} ${hh}:${mm}:${ss}${SSSSSS} [${TARGET}] ([${LOG_GROUP}][${LOG_TAG}][L${FILE_LINE} ${FUNC_NAME}])\n${MSG}" // log target LOG_INFO = "info" LOG_DEBUG = "debug" LOG_ERROR = "error" LOG_WARN = "warn" LOG_FATAL = "fatal" LOG_PANIC = "panic" // appender tag LOG_APPENDER = "appender" // appender type VAL_APPENDER_CONSOLE = "console" VAL_APPENDER_FILE = "file" VAL_APPENDER_MONGODB = "mongodb" VAL_APPENDER_EMAIL = "email" VAL_APPENDER_HTML = "html" VAL_APPENDER_NONE = "none" )
const ( DEFAULT_FILE_MAX_SIZE = 5 << 20 // default 5M file max size DEFAULT_FILE_MAX_NUM = 1000 // default same name log file max num )
const ( // HTMLHandLayout = `` /* 2734-byte string literal not displayed */ // HTMLEndLayout = `</tbody></table></body></html> ` // HTMLContentLayout = `` /* 302-byte string literal not displayed */ DEFAULT_HTML_MAX_SIZE = 3 << 20 // default 5M html max size DEFAULT_HTML_MAX_NUM = 1000 // default same name log html max num )
const (
DEFAULT_CONTENT_TYPE = "Content-Type: text/plain; charset=UTF-8"
)
Variables ¶
Functions ¶
func LoadConfig ¶
reset load config @configPath 相对或绝对路径,相对路径以执行文件目录开始
func StartLogManager ¶
func StartLogManager(logChannelSize int)
start log manager 调用此方法启动时加载默认配置进行设置, 如果需要加载配置文件可以调用LoadConfig进行相应的设置。
@logChannelSize log的缓存区大小,默认
Types ¶
type Appender ¶
type Appender interface { // 写入信息 // @msg 写入的信息 // @configInfo 实现对象的配置信息例如 AppenderConsoleConfig struct{} Write(msg *LogMsg, configInfo interface{}) // 实现接口的名称 Name() string }
输出目的的接口,例如需要实现console、file、html、mongodb、email
type AppenderConsole ¶
type AppenderConsole struct { }
Appender impl console write
func (*AppenderConsole) Write ¶
func (ac *AppenderConsole) Write(msg *LogMsg, configInfo interface{})
#interface impl 控制台信息写入
type AppenderConsoleConfig ¶
type AppenderConsoleConfig struct {
Pattern string `json:"ConsolePattern"` // 信息内容输出格式
}
appender console config
type AppenderEmail ¶
type AppenderEmail struct { }
Appender impl email send
func (*AppenderEmail) Write ¶
func (ae *AppenderEmail) Write(msg *LogMsg, configInfo interface{})
#interface impl
type AppenderEmailConfig ¶
type AppenderEmailConfig struct { Host string `json:"EmailHost"` // smtp host User string `json:"EmailUser"` // email send user address Password string `json:"EmailPassword"` // FromName string `json:"EmailFromName"` // send user show name 如果nil 直接使用EmailUser的值 ToEmails string `json:"EmailTo"` // send to email address "x1@gmail.com;x2@gmail.com" Pattern string `json:"EmailPattern"` // 信息内容输出格式 Subject string `json:"EmailSubject"` // email subject ContentType string `json:"EmailContentType"` // 默认 "Content-Type: text/plain; charset=UTF-8" }
appender email config
type AppenderFile ¶
type AppenderFile struct {
// contains filtered or unexported fields
}
Appender impl console write
func (*AppenderFile) Write ¶
func (af *AppenderFile) Write(msg *LogMsg, configInfo interface{})
#interface impl 控制台信息写入
type AppenderFileConfig ¶
type AppenderFileConfig struct { MaxSize int64 `json:"FileMaxSize"` // 文件大小 byte 默认5M SavePath string `json:"FileSavePath"` // 文件存储路径, 默认执行文件目录 Name string `json:"FileName"` // 文件名(可以输入时间格式) 默认"(ExceFileName)-${yyyy}-${MM}-${dd}.log" Pattern string `json:"FilePattern"` // 信息内容输出格式 SameMaxNum int `json:"FileSameNameMaxNum"` // 日志相同名称的最大数量,例如file(1).log...file(1000).log。默认1000,超出建立的数量将不会创建日志文件 }
appender file 配置注意事项: Name(FileName) "file-${yyyy}/${MM}/${dd}.log" error 如果包含"/"会以目录作为处理的,所以需要注意。
"../file-${yyyy}-${MM}-${dd}.log" proper 可以使用相对路径来命名"/"是作为目录的操作,截取后面的文件名(file-${yyyy}-${MM}-${dd}.log)
type AppenderHtml ¶
type AppenderHtml struct {
// contains filtered or unexported fields
}
Appender impl console write
func NewAppenderHtml ¶
func NewAppenderHtml() *AppenderHtml
func (*AppenderHtml) Write ¶
func (ah *AppenderHtml) Write(msg *LogMsg, configInfo interface{})
#interface impl
type AppenderHtmlConfig ¶
type AppenderHtmlConfig struct { SavePath string `json:"HtmlSavePath"` // 文件存储路径, 默认执行文件目录 Name string `json:"HtmlName"` // 文件名(可以输入时间格式) 默认"(ExceFileName)-${yyyy}-${MM}-${dd}.html" Title string `json:"HtmlTitle"` // html title TimeFormat string `json:"HtmlTimeFormat"` // time format "yyyy-MM-dd hh:mm:ssSSSSSSSSS" MaxSize int64 `json:"HtmlMaxSize"` // 文件大小 byte 默认3M SameMaxNum int `json:"HtmlSameNameMaxNum"` // 日志相同名称的最大数量,例如log(1).html...log(1000).html。默认1000,超出建立的数量将不会创建日志文件 }
appender html
type LogConfig ¶
type LogConfig struct { // target config Info *TargetConfigInfo `json:"info"` Debug *TargetConfigInfo `json:"debug"` Error *TargetConfigInfo `json:"error"` Warn *TargetConfigInfo `json:"warn"` Fatal *TargetConfigInfo `json:"fatal"` Panic *TargetConfigInfo `json:"panic"` // global config *TargetConfigInfo }
log config
type MainLogConfig ¶
type MainLogConfig struct { InitAppenders []string // init appenders impl. console, file... TimeFormat string // time format LogGroups map[string]LogConfig // log tags日志标识集合元素 }
main log config
type SFLogger ¶
type SFLogger struct {
// contains filtered or unexported fields
}
logger 产生日志的输出,主要负责标识每个不同的日志对象, 使用分组标识和日志标识进行标识处理。 然后可调用(Info、Debug、Error)函数进行信息输出
func NewLogger ¶
New SFLogger default log global group, KEY_GLOBAL_GROUP_LOG_CONFIG
@logTag 输出日志对象的标识,最好是唯一的 @return
func NewLoggerByGroup ¶
@logGroup log group
type TargetConfigInfo ¶
type TargetConfigInfo struct { Appender []string *AppenderFileConfig *AppenderConsoleConfig *AppenderMongodbConfig *AppenderEmailConfig *AppenderHtmlConfig AppenderNoneConfig }
target config info,contain info,debug,error,warn,fatal,panics