# ginLogrus **Repository Path**: jltx/ginLogrus ## Basic Information - **Project Name**: ginLogrus - **Description**: golang的gin框架下基于logrus的插件。支持gin的middleware的access.log,请求访问日志自动记录。另外还有业务代码手动记录的trace.log。有颜色的日志信息打印到stdout,并用hook记录相同的无颜色日志到log文件。 支持循环日志,并可设置保留日志的数量。 另外,warn,error级别以上的日志会单独记录到error.log中。 并为活动日志生成链接。 - **Primary Language**: Go - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2023-03-27 - **Last Updated**: 2023-03-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ginLogrus ## 不在维护 为了在gorm实现同样的功能,该日志插件全部重建,下面是新库的地址 https://github.com/justin-ren/xlogrus 或 https://gitee.com/JurenGo/xlogrus #### 介绍 - golang的gin框架下基于logrus的插件。 - 支持gin的middleware的access.log,请求访问日志自动记录。 - 另外还有业务代码手动记录的trace.log。 - 有颜色的日志信息打印到stdout,并用hook记录相同的无颜色日志到log文件。 - 支持循环日志,并可设置保留日志的数量。 - 另外,warn,error级别以上的日志会单独记录到error.log中。 - 并为有日期后缀的活动日志生成相应的access.log,trace.log,error.log名字的链接,方便trail命令直接访问。 - 输出如下: ![输入图片说明](readme_pic/color_ginLogrus.png) - 日志格式如下: ```Bash $ ls -lrt total 12 lrwxrwxrwx 1 renxiong renxiong 18 Jan 5 23:43 trace.log -> trace.log.20230105 lrwxrwxrwx 1 renxiong renxiong 16 Jan 5 23:44 error.log -> error.log.202301 -rw-r--r-- 1 renxiong renxiong 124 Jan 5 23:44 access.log.20230105 lrwxrwxrwx 1 renxiong renxiong 19 Jan 5 23:44 access.log -> access.log.20230105 -rw-r--r-- 1 renxiong renxiong 235 Jan 5 23:44 trace.log.20230105 -rw-r--r-- 1 renxiong renxiong 95 Jan 5 23:44 error.log.202301 $ cat access.log [2023-01-05 23:44:16.265705] INFO clientIP=::1 dataLength=17 latency=789.116µs method=GET path=/log/index statusCode=200 $ cat trace.log [2023-01-05 23:43:51.664605] INFO enter main [2023-01-05 23:44:16.264921] DEBUG enter index [2023-01-05 23:44:16.265422] INFO enter index [2023-01-05 23:44:16.265465] WARN enter index [2023-01-05 23:44:20.024242] ERROR enter ignore $ cat error.log [2023-01-05 23:44:16.265465] WARN enter index [2023-01-05 23:44:20.024242] ERROR enter ignore $ ``` #### 软件架构 依赖下面第三方插件 ```Go "github.com/gin-gonic/gin" //日志切换插件,可以根据日志创建时间切换日志,还可以设置日志文件保存的数量,和为活动日志创建没有时间搓的file link rotateLogs "github.com/lestrrat-go/file-rotatelogs" //出错时记录call stack 输出格式 %+v "github.com/pkg/errors" //logrus的钩子插件,可以根据loglevel记录到不同的文件 fileLogHook "github.com/rifflock/lfshook" //logrus日志插件 "github.com/sirupsen/logrus" //设置日志文件头格式:时间格式,颜色格式,可以实现stdout有颜色,log file无颜色 prefixFormatter "github.com/x-cray/logrus-prefixed-formatter" ``` #### 安装教程 ```Bash go get -u -t gitee.com/JurenGo/ginLogrus ``` #### 使用说明 ```Go /** * @project testGinLogrus * @author JurenGo * @desc ginLogrus usage * @date 10:07 AM 1/1/23 **/ package main import ( "gitee.com/JurenGo/ginLogrus" "github.com/gin-gonic/gin" "github.com/pkg/errors" "github.com/sirupsen/logrus" "net/http" ) var ( //gin的middleware, 写入access.log, gin自动调用 aLog gin.HandlerFunc //业务代码的trace.log,手工调用 tLog *logrus.Logger ) func init() { accessConfig := &ginLogrus.LogAccessConfig{ SkipRoute: map[string]struct{}{ "/log/ignore": struct{}{}, }, StdTimeFormat: "06/01/02 15:04:05", LogPath: "./logs/", FilePrefix: "access.log", FileSuffix: "%Y%m%d", IsErrFileHook: true, KeepCount: 7, FileTimeFormat: "2006-01-02 15:04:05.000000", } traceConfig := &ginLogrus.LogTraceConfig{ StdTimeFormat: "06/01/02 15:04:05", LogPath: "./logs/", FilePrefix: "trace.log", FileSuffix: "%Y%m%d", IsErrFileHook: true, KeepCount: 7, FileTimeFormat: "2006-01-02 15:04:05.000000", } tLog = ginLogrus.NewTraceLog(traceConfig) aLog = ginLogrus.NewAccessLog(accessConfig) } func main() { tLog.Info("enter main") r := gin.New() r.Use(aLog, gin.Recovery()) rLog := r.Group("log") rLog.GET("/index", indexAction) rLog.GET("/ignore", ignoreAction) err := r.Run(":8080") if err != nil { panic(errors.Cause(err)) return } } func indexAction(ctx *gin.Context) { tLog.Debugln("enter index") tLog.Infoln("enter index") tLog.Warnln("enter index") ctx.JSON(http.StatusOK, gin.H{"msg": "success"}) } func ignoreAction(ctx *gin.Context) { tLog.Errorln("enter ignore") ctx.JSON(http.StatusOK, gin.H{"msg": "success"}) } ```