发布于2026-07-04 阅读(0)
扫一扫,手机访问
---
**1. 先拿标准库 `log` 包开刀**
标准库虽然轻量,但自定义起来一点也不含糊。关键就几步:打开或创建一个日志文件,然后把日志输出重定向到它,再设置前缀和格式标志。看代码:
```go
package main
import (
"log"
"os"
)
func main() {
// 创建一个新的日志文件
logFile, err := os.OpenFile("custom.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
if err != nil {
log.Fatal(err)
}
defer logFile.Close()
// 设置日志输出到文件
log.SetOutput(logFile)
// 设置日志前缀
log.SetPrefix("INFO: ")
// 设置日志标志
log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)
// 写入日志
log.Println("This is a custom log message.")
}
```
这段代码跑完之后,`custom.log` 里就会多一行带时间戳、文件名和行号的日志记录,前缀也变成了“INFO: ”。需要提醒的是,`SetOutput`、`SetPrefix` 和 `SetFlags` 都是全局生效的,适合简单项目或快速原型。
---
**2. 如果标准库不够用,试试 `logrus`**
当项目日志量变大,或者需要更精细的级别控制(比如 debug、info、warn、error),第三方库 `logrus` 是个不错的选择。先通过 `go get` 把它拉下来:
```bash
go get github.com/sirupsen/logrus
```
然后在代码里这样用:
```go
package main
import (
"os"
"github.com/sirupsen/logrus"
)
func main() {
// 创建一个新的日志文件
logFile, err := os.OpenFile("custom.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
if err != nil {
logrus.Fatal(err)
}
defer logFile.Close()
// 设置日志输出到文件
logrus.SetOutput(logFile)
// 设置日志级别
logrus.SetLevel(logrus.InfoLevel)
// 设置日志格式,这里用的是带完整时间戳的文本格式
logrus.SetFormatter(&logrus.TextFormatter{
FullTimestamp: true,
})
// 写入日志
logrus.Info("This is a custom log message.")
}
```
和标准库相比,`logrus` 的好处在于:级别过滤更直观,可以方便地切换成 JSON 格式(适合日志收集系统),而且支持结构化字段。当然,如果你觉得 `logrus` 太重,也可以看看 `zap` 或 `zerolog`——都是性能很能打的选项。
---
**总结一下**:两者都能在 Debian 上完成自定义日志输出的工作。标准库胜在零依赖、轻量,适合小项目;第三方库则在灵活性、性能和功能扩展上更有优势。根据实际项目规模选一个就行,没有绝对的好坏。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8