add doc
This commit is contained in:
parent
42beab28a3
commit
107b8f3050
76
README.md
76
README.md
|
@ -1,3 +1,77 @@
|
|||
# gologger
|
||||
|
||||
a logger used in go
|
||||
GoLogger 是一个简单但功能强大的 Go 语言日志库,提供灵活的日志记录功能。它支持多种日志输出方式(控制台、文件等),并允许自定义日志格式。
|
||||
|
||||
## 特性
|
||||
- 支持多种日志级别:ERROR, WARN, INFO, DEBUG, TRACE
|
||||
- 支持多种输出方式:控制台、文件(支持滚动策略)
|
||||
- 可定制日志格式
|
||||
- 支持按类别记录日志
|
||||
|
||||
## 安装
|
||||
```bash
|
||||
go get github.com/yourusername/gologger
|
||||
```
|
||||
|
||||
## 快速开始
|
||||
```go
|
||||
package main
|
||||
|
||||
import (
|
||||
"github.com/yourusername/gologger"
|
||||
)
|
||||
|
||||
func main() {
|
||||
// 获取默认logger
|
||||
logger := gologger.GetLogger("main")
|
||||
|
||||
// 设置全局日志级别
|
||||
gologger.Configure(gologger.LoggersConfig{
|
||||
Level: "info",
|
||||
Appenders: []gologger.LogAppenderConfig{
|
||||
{
|
||||
Type: "console",
|
||||
},
|
||||
{
|
||||
Type: "file",
|
||||
Options: map[string]interface{}{
|
||||
"filePath": "app.log",
|
||||
"EnableRolling": true,
|
||||
"MaxSize": 1024 * 1024 * 10, // 10MB
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
// 记录日志
|
||||
logger.Info("Application started")
|
||||
logger.Error("An error occurred")
|
||||
}
|
||||
```
|
||||
|
||||
## 配置说明
|
||||
|
||||
### 日志级别
|
||||
支持的级别包括:off, error, warn, info, debug, trace
|
||||
|
||||
### 输出方式(Appenders)
|
||||
|
||||
1. **ConsoleAppender** - 控制台输出
|
||||
配置示例:
|
||||
```go
|
||||
{
|
||||
Type: "console",
|
||||
}
|
||||
```
|
||||
|
||||
2. **FileAppender** - 文件输出,支持滚动策略
|
||||
配置参数:
|
||||
- filePath: 日志文件路径
|
||||
- EnableRolling: 是否启用滚动(默认true)
|
||||
- MaxSize: 单个文件最大大小(字节,默认10MB)
|
||||
- MaxAge: 文件最大保存时间(秒,默认86400秒=24小时)
|
||||
|
||||
### 格式化器
|
||||
可以通过SelectFormatter选择不同的日志格式:
|
||||
- simple: 简单格式 `[timestamp] level : category - message`
|
||||
- json: JSON 格式输出
|
16
console.go
16
console.go
|
@ -4,6 +4,18 @@ import (
|
|||
"fmt"
|
||||
)
|
||||
|
||||
// ConsoleAppender implements the LoggerAppender interface for console output.
|
||||
// It uses color-coded templates for different log levels.
|
||||
// Example:
|
||||
// appender := &ConsoleAppender{
|
||||
// formatter: NewSimpleFormatter(),
|
||||
// }
|
||||
// appender.Append(event)
|
||||
// appender.Close()
|
||||
type ConsoleAppender struct {
|
||||
formatter LogFormatter
|
||||
}
|
||||
|
||||
const (
|
||||
ErrorTemplate = "\033[1;31m%s\033[0m"
|
||||
WarnTemplate = "\033[1;33m%s\033[0m"
|
||||
|
@ -12,10 +24,6 @@ const (
|
|||
TraceTemplate = "\033[1;35m%s\033[0m"
|
||||
)
|
||||
|
||||
type ConsoleAppender struct {
|
||||
formatter LogFormatter
|
||||
}
|
||||
|
||||
// Close implements LoggerAppender.
|
||||
func (c *ConsoleAppender) Close() {
|
||||
|
||||
|
|
11
file.go
11
file.go
|
@ -8,6 +8,17 @@ import (
|
|||
"time"
|
||||
)
|
||||
|
||||
// FileAppender implements the LoggerAppender interface for file output.
|
||||
// It supports log rotation based on file size and age.
|
||||
// Example:
|
||||
// appender := &FileAppender{
|
||||
// formatter: NewSimpleFormatter(),
|
||||
// filePath: "app.log",
|
||||
// EnableRolling: true,
|
||||
// MaxSize: 1024 * 1024 * 10, // 10MB
|
||||
// }
|
||||
// appender.Append(event)
|
||||
// appender.Close()
|
||||
type FileAppender struct {
|
||||
formatter LogFormatter
|
||||
filePath string
|
||||
|
|
12
format.go
12
format.go
|
@ -1,3 +1,5 @@
|
|||
// Package gologger provides a simple logging implementation with multiple appenders and formatters.
|
||||
// It supports console, file, and HTTP logging with customizable formats.
|
||||
package gologger
|
||||
|
||||
import (
|
||||
|
@ -6,10 +8,16 @@ import (
|
|||
"strings"
|
||||
)
|
||||
|
||||
const logTemplate = "[%s] %s : %s - %s\n"
|
||||
|
||||
// LogFormatter is a function type that formats a LogEvent into a string.
|
||||
// Example:
|
||||
// formatter := func(event LogEvent) string {
|
||||
// return fmt.Sprintf("[%s] %s: %v", event.Ts.Format("2006-01-02"), event.Level, event.Data)
|
||||
// }
|
||||
type LogFormatter = func(LogEvent) string
|
||||
|
||||
// format is the default formatter that converts a LogEvent to a string using the default template.
|
||||
// It handles both simple values and formatted strings.
|
||||
// Template: "[timestamp] level : category - data"
|
||||
func format(logEvent LogEvent) string {
|
||||
data := logEvent.Ts.Format("2006-01-02 15:04:05")
|
||||
msg := ""
|
||||
|
|
8
main.go
8
main.go
|
@ -1,3 +1,5 @@
|
|||
// Package gologger provides a simple logging implementation with multiple appenders and formatters.
|
||||
// It supports console, file, and HTTP logging with customizable formats.
|
||||
package gologger
|
||||
|
||||
import (
|
||||
|
@ -55,6 +57,12 @@ type LoggersConfig struct {
|
|||
Appenders map[string]LogAppenderConfig `json:"appenders"`
|
||||
Categories map[string]LogConfig `json:"categories"`
|
||||
}
|
||||
// Logger represents a logger instance for a specific category.
|
||||
// It maintains the log level and appenders for that category.
|
||||
// Example:
|
||||
// logger := GetLogger("mycategory")
|
||||
// logger.Info("This is an info message")
|
||||
// logger.Error("This is an error message")
|
||||
type Logger struct {
|
||||
category string
|
||||
level int
|
||||
|
|
Loading…
Reference in New Issue