go log添加钩子
AI-摘要
CaiCai GPT
AI初始化中...
介绍自己
生成本文简介
推荐相关文章
前往主页
前往tianli博客
本文最后更新于 2024-09-06,文章内容可能已经过时。
package app
import (
"io"
"log"
"os"
"strings"
"testing"
)
// HookWriter 实现了 io.Writer 接口,在写入时执行自定义函数
type HookWriter struct {
inner io.Writer
hook func(string)
}
func (hw *HookWriter) Write(p []byte) (n int, err error) {
// 将字节切片转换为字符串
logMsg := string(p)
// 去除字符串末尾的换行符(因为 log 输出时会自动添加换行符)
logMsg = strings.TrimSuffix(logMsg, "\n")
// 执行自定义函数
hw.hook(logMsg)
// 将数据写入内部的 io.Writer
return hw.inner.Write(p)
}
func TestLog(t *testing.T) {
// 创建一个 HookWriter,内部写入 os.Stdout,同时定义一个钩子函数
hookWriter := &HookWriter{
inner: os.Stdout,
hook: func(msg string) {
// 这里可以添加自定义的逻辑
if strings.Contains(msg, "error") {
log.Println("Custom function: detected an error in the log message")
}
},
}
// 创建一个新的 log.Logger,使用 HookWriter
logger := log.New(hookWriter, "", log.LstdFlags)
logger.Fatalln("This is a normal log message")
logger.Println("This is an error log message")
}
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 caicaiBlog
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果