21 Star 123 Fork 11

水不要鱼 / logit

 / 详情

屏幕打印和文件输入同时执行怎么操作呢?

已完成
创建于  
2020-03-17 18:17

如题,感谢回答。

评论 (1)

hibo 创建了任务
hibo 关联仓库设置为水不要鱼/logit
展开全部操作日志

要达到多输出源的效果,目前的版本中有两种方法:

  • 使用 io.MultiWriter 包装器
  • 使用 logit 的多处理器(推荐)

演示代码:

package main

import (
    "io"
    "os"
    "time"
    
    "github.com/FishGoddess/logit"
)

func main() {

    // 第一种方式
    // 使用 io.MultiWriter 包装器
    way1()

    // 第二种方式
    // 使用 logit 的多处理器(推荐)
    way2()
}

// 第一种方式
// 使用 io.MultiWriter 包装器
func way1() {

    // 创建日志文件
    // 这边需要使用 O_APPEND 追加模式打开,否则会覆盖原有的日志内容
    // 为了演示方便,忽略错误
    logFile, _ := os.OpenFile("E:/20200329.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
    defer logFile.Close()

    // 创建文件日志记录器
    logger := logit.NewLogger(io.MultiWriter(logFile, os.Stdout), logit.InfoLevel)
    logger.Info("文件和控制台同时输出。。。")
}

// 第二种方式
// 使用 logit 的多处理器(推荐)
func way2() {

    // 创建文件日志记录器
    logger := logit.NewFileLogger("E:/20200329.log")

    // 添加一个输出到控制台的日志处理器
    // 注意这里需要保留原有的日志处理器,所以使用 AddHandlers 而不是 SetHandlers
    // 如果需要输出为 Json 字符串形式,就使用 logit.HandlerOf("json")
    logger.AddHandlers(logit.HandlerOf("default"))
    logger.Info("文件和控制台同时输出。。。")
}

详情可以参考 handler 中的例子。

上述代码使用的 logit 版本是 v0.1.1-alpha。

希望这个回答可以帮助到您,谢谢反馈哈! :laughing:

水不要鱼 任务状态待办的 修改为进行中
水不要鱼 任务状态进行中 修改为已完成
水不要鱼 添加了
 
question
标签

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(2)
2065430 fishgoddess 1700394419 8672 aibow 1578914584
Go
1
https://gitee.com/FishGoddess/logit.git
git@gitee.com:FishGoddess/logit.git
FishGoddess
logit
logit

搜索帮助

53164aa7 5694891 3bd8fe86 5694891