go web: 2 封装日志包log

本文介绍了在Go Web开发中封装日志包的需求和实现过程。作者提出需要一个简单的日志系统,提供Error和Info方法,并能按天分割日志文件。通过在logger.go中编写代码实现了这一功能,日志文件会以logname.20170823的形式保存。在main.go中引入并配置后,日志功能开始工作,经测试10万行日志写入大约需要400毫秒。
摘要由CSDN通过智能技术生成

在web项目中,记日志是非常重要的。所以,我做的第一件事,就是向log包动手。
和Python相比,log包功能上逊色不少,但它给我们提供了基础的构架,让我们能自己稍微封装下。

需求

对日志包我的要求很低,只要满足:
1. 提供Error, Info方法即可
2. 日志按天分割,即每隔一天,把昨天的日志保存为 logname.20170823这样的文件

代码

在原来的基础上,我们在src中创建文件夹logger,在里面创建文件logger.go
现在文件结构如下:

src--|
     handlers--|
               test--|
                     test.go
     logger--|
             logger.go
     |
     main.go

这个文件代码有点长,所以放附录了。
要使用,只需要在main.go里调用:

logger.InitLogging("8080", logger.DEBUG)
logger.Errorln("%s %s", "hi", "my boy")

然后,在bin文件的同级,手工创建logs文件夹。运行程序,日志功能就开始执行了。
测试了一下效率,在mac pro上。10万行日志大概400毫秒。凑合着用还行。

附录logger.go代码

// Package logger 是系统日志的封装,主要在之上封装了Error,Info两个函数。并提供了跨日期
// 自动分割日志文件的功能。
// 可以在InitLogging 后直接使用logger.Error, logger.Info操作默认的日志对象。
// 也可以用logger.New 创建一个自己的日志对象。
package logger

import (
    "bytes"
    "fmt"
    "io"
    "log"
    "os"
    "path/filepath"
    "runtime"
    "strconv"
    "time"
)

//logging 是一个默认的日志对象,提供全局的Error, Info函数供使用,必须调用InitLogging
//函数进行初始化
var logging *Logger

var DEBUG = 0
var INFO = 3
var ERROR = 5

//InitLogging 初始化默认的日志对象,初始化后,就能使用Error,Info函数记录日志
func InitLogging(inputfilename string, level int) {
    logging = New(inputfilename, true, false,
        level, 3)
}

//Error 默认日志对象方法,记录一条错误日志,需要先初始化
func Error(format string, v ...interface{}) {
    logging.Err
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值