1
0
Fork 0
mirror of https://github.com/chrislusf/seaweedfs synced 2025-06-30 08:42:47 +02:00
seaweedfs/weed/util/log/README.md
2025-05-22 09:54:31 -07:00

98 lines
No EOL
2.4 KiB
Markdown

# SeaweedFS Logging Package
This package provides a logging interface for SeaweedFS using [zap](https://github.com/uber-go/zap) as the underlying logging library. It provides a similar interface to glog while offering the performance and features of zap.
## Features
- High-performance structured logging
- JSON output format
- Dynamic log level changes
- Support for both structured and unstructured logging
- Compatible with existing glog-style code
- Thread-safe
## Usage
### Basic Setup
```go
import "github.com/seaweedfs/seaweedfs/weed/util/log"
import "go.uber.org/zap/zapcore"
// Initialize the logger with info level
log.Init(zapcore.InfoLevel)
```
### Basic Logging
```go
// Basic logging
log.Info("This is an info message")
log.Infof("This is a formatted info message: %s", "hello")
log.Warning("This is a warning message")
log.Warningf("This is a formatted warning message: %s", "hello")
log.Error("This is an error message")
log.Errorf("This is a formatted error message: %s", "hello")
```
### Verbose Logging
```go
// Using V for verbose logging
if log.V(1) {
log.Info("This is a verbose message")
}
```
### Structured Logging
```go
// Using structured logging
logger := log.With(
zap.String("service", "example"),
zap.Int("version", 1),
)
logger.Info("This is a structured log message")
// Using sugared logger with fields
sugar := log.WithSugar("service", "example", "version", 1)
sugar.Infof("This is a sugared log message with fields: %s", "hello")
```
### Fatal Logging
```go
// Fatal logging (will exit the program)
log.Fatal("This is a fatal message")
log.Fatalf("This is a formatted fatal message: %s", "hello")
```
## Log Levels
The package supports the following log levels:
- Debug (-1)
- Info (0)
- Warning (1)
- Error (2)
- Fatal (3)
## Migration from glog
To migrate from glog to this package:
1. Replace `import "github.com/golang/glog"` with `import "github.com/seaweedfs/seaweedfs/weed/util/log"`
2. Replace glog function calls with their log package equivalents:
- `glog.Info` -> `log.Info`
- `glog.Infof` -> `log.Infof`
- `glog.Warning` -> `log.Warning`
- `glog.Warningf` -> `log.Warningf`
- `glog.Error` -> `log.Error`
- `glog.Errorf` -> `log.Errorf`
- `glog.Fatal` -> `log.Fatal`
- `glog.Fatalf` -> `log.Fatalf`
- `glog.V(level)` -> `log.V(level)`
## Example
See the `example` directory for a complete example of how to use the logging package.