mirror of
https://github.com/chrislusf/seaweedfs
synced 2025-06-30 08:42:47 +02:00
98 lines
No EOL
2.4 KiB
Markdown
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. |