• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

视频远程通话会议系统/私有化部署会议系统EasyRTC-SFU内Go语言日志Zap使用教程介绍 ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

企业视频通话会议系统EasyRTC基于网络架构,各分支机构与总部之间使用IP线路连接,在总部部署服务器提供视频调度指挥服务,能够进行视频会议、远程培训、协同工作等沟通。近期更新的新版本EasyRTC-SFU更是在原有基础上进行了升级改造,在系统的集成性、承载量上有更大的提升。

在EasyRTC-SFU 软件开发过程中,日志模块采用 uber-go/zap 编写。Zap 为 Uber 公司开源的一个高效、快速、可输出多等级信息的日志项目。

在 Easy-SFU 中,封装如下:

// 操作日志
var operationLogger *zap.Logger
 
// 获取日志
func GetLogger() *zap.Logger {
    if operationLogger == nil {
        operationLogger = createLog("./easyrtc.log", true)
    }
 
    return operationLogger
}
 
// 初始化 Log 模块
func createLog(filePath string, develop bool) *zap.Logger {
    //logpath := filepath.Join(GetConf().DirLogs, fileName)
 
    hook := lumberjack.Logger{
        Filename:   filePath, // 日志文件路径
        MaxSize:    10,       // 每个日志文件保存的最大尺寸 单位:M
        MaxBackups: 10,       // 日志文件最多保存多少个备份
        MaxAge:     30,       // 文件最多保存多少天
        Compress:   false,    // 是否压缩
    }
 
    encoderConfig := zapcore.EncoderConfig{
        TimeKey:       "time",
        LevelKey:      "level",
        NameKey:       "monitorLogger",
        CallerKey:     "linenum",
        MessageKey:    "msg",
        StacktraceKey: "stacktrace",
        LineEnding:    zapcore.DefaultLineEnding,
        EncodeLevel:   zapcore.LowercaseLevelEncoder, // 小写编码器
        EncodeTime: func(t time.Time, enc zapcore.PrimitiveArrayEncoder) {
            enc.AppendString(t.Format("2006-01-02 15:04:05"))
        },
        EncodeDuration: zapcore.SecondsDurationEncoder, //
        EncodeCaller:   zapcore.FullCallerEncoder,      // 全路径编码器
        EncodeName:     zapcore.FullNameEncoder,
    }
 
    // 设置日志级别
    atomicLevel := zap.NewAtomicLevel()
    atomicLevel.SetLevel(zap.InfoLevel)
 
    core := zapcore.NewCore(
        zapcore.NewJSONEncoder(encoderConfig),                                 // 编码器配置
        zapcore.NewMultiWriteSyncer(zapcore.AddSync(os.Stdout), zapcore.AddSync(&hook)), // 打印到控制台和文件
        atomicLevel,                                                               // 日志级别
    )
 
    var logger *zap.Logger
    if develop {
        // 开启文件及行号
        // 开启开发模式,堆栈跟踪
        caller := zap.AddCaller()
        develop := zap.Development()
        logger = zap.New(core, caller, develop)
    } else {
        logger = zap.New(core)
    }
 
    return logger
}

  createLog()方法定义了创建已经有默认配置的一些日志格式。用户可以直接通过调用此方法创建日志。
GetLogger()方法可以被项目的其他模块调用,直接将对应的日志指针返回出去。
获取到 logger 后的使用方式有多种。常见的使用方式如下:

// 记录Info信息
logger.Info("get room.", zap.String("roomName", req.Room))
// 记录 Error 信息
logger.Error("get room error.", zap.String("errorCode", errStr))
// 记录 int 类型的数据
logger.Info("get room.", zap.Int("roomId", 16)
// 记录任意类型的数据字段
logger.Info("created room.", zap.Reflect("roomName", req.Room))

最终生成的日志为json格式的数据。

如果大家想了解更多关于EasyRTC-SFU版本的信息,可以进入EasyRTC介绍页查阅,此外,我们还提供了测试方案,如果大家有需求,也可以联系我们获取测试方案。视频相关解决方案均可访问TSINGSEE青犀视频,如有需求或疑问,欢迎随时联系我们!

 

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
go语言标准库 时刻更新发布时间:2022-07-10
下一篇:
Go中的fmt几种输出的区别和格式化方式发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap