首页 > 其他分享 >go logrus输出json日志并转储

go logrus输出json日志并转储

时间:2024-09-26 21:49:04浏览次数:7  
标签:err logrus 转储 json go 日志 logFile os

相比于klog,logrus支持输出json日志,但是默认time不在最前面,而在最后,因为日志输出时按照key字母顺序排序。

go get github.com/sirupsen/logrus
go get github.com/natefinch/lumberjack
package main

import (
	"fmt"
	"io"
	"os"
	"path/filepath"
	"runtime"

	"github.com/sirupsen/logrus"
	"gopkg.in/natefinch/lumberjack.v2"
)

const (
	logFilePath = "./test.log"
)

var (
	logFile *os.File
)

func init() {
	logrus.SetReportCaller(true)
	logrus.SetFormatter(
		&logrus.JSONFormatter{
			TimestampFormat: "2006-01-02 15:04:05",
			CallerPrettyfier: func(f *runtime.Frame) (function string, file string) {
				return "", fmt.Sprintf("%s:%d", filepath.Base(f.File), f.Line)
			},
		},
	)

	var err error
	// 使用os.create方法,每次都会创建新文件
	logFile, err = os.OpenFile(logFilePath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
	if err != nil {
		logrus.Fatalf("Failed to open log file: %v", err)
	}
	logFile.Close()

	l := &lumberjack.Logger{
		Filename:   logFilePath,
		MaxSize:    1,
		MaxBackups: 3,
		MaxAge:     28,
		Compress:   true,
	}
	logrus.SetOutput(io.MultiWriter(os.Stdout, l))
}

func main() {
	defer logFile.Close()
	logrus.Info("begin to run")
}

 

标签:err,logrus,转储,json,go,日志,logFile,os
From: https://www.cnblogs.com/WJQ2017/p/18434473

相关文章

  • .net 将string字符串转为json对象的两种方法
    1)将string直接转为json【注:适合信息量比较少的情况】  stringstr="{\"id\":\"s001\",\"name\":\"张三\",\"gender\":\"男\"}"    【注:上述中\起转义作用】2)将string信息转为list对象后再通过list对象转为json【注:适合信息量比较少的情况......
  • go json配置
    问题1:被序列化的结构体首字母必须大写typeStudentstruct{ sexstring ageint}如果被序列化的结构体首字母不大写,那么序列化结果是空。告警内容structtype'test/json_config.Student'doesn'thaveanyexportedfields,norcustommarshaling问题2:不指定json配置后......
  • package.json依赖包漏洞之nodejs-glob-parent正则表达式拒绝服务漏洞
    背景有个安全扫描的流水线,扫描了负责的项目之后,发现一些漏洞。需要说明的是,这个扫描只是针对package.json文件,扫的是依赖树,而不是项目源代码,也不是打包后的代码。但既然是漏洞,都是可以好好学习下的。 nodejs-glob-parent正则表达式拒绝服务漏洞(CVE-2020-28469)被扫描出来......
  • 差异 JSON:综合指南
    JSON(JavaScript对象表示法)由于其简单性和可读性,已成为Web应用程序中数据交换的标准。JSON的结构由键值对、数组和对象组成,使其成为表示复杂数据结构的理想格式。因此,它被广泛应用于API、配置文件和数据存储中。然而,随着应用程序变得越来越复杂,比较JSON数据的需求也随之增......
  • JsonGenerator.Feature各枚举项的作用
    枚举项作用AUTO_CLOSE_JSON_CONTENT确定在生成器关闭时,是否自动关闭未匹配的JSON数组或对象。AUTO_CLOSE_TARGET确定生成器是否会自动关闭底层的输出目标。ESCAPE_NON_ASCII指定是否需要对超出7位ASCII范围的所有字符进行转义。FLUSH_PASSED_TO_STREAM指定调用fl......
  • JsonParser.Feature各枚举项的作用
    枚举项作用ALLOW_BACKSLASH_ESCAPING_ANY_CHARACTER允许反斜杠转义任何字符。ALLOW_COMMENTS允许在JSON内容中包含注释。ALLOW_MISSING_VALUES允许在JSON数组中缺少值。ALLOW_NON_NUMERIC_NUMBERS允许非数字的数值(如NaN、Infinity)。ALLOW_NUMERIC_LEADING_Z......
  • 04 JSON 序列化 反序列化
    `#!/usr/bin/envpython#-*-coding:utf-8-*-#@File:json字符串-序列化-反序列化.py#@Author:jhchena#@Date:2024/8/18#@Desc:#@Contact:[email protected]=[11,22,33,44]#python转换成json格式-序列化dic_string=......
  • 像JSON一样使用ProtoBuf,空间还能缩小60%,性能提升100%
    引言在前面《释放你九成的带宽和内存:GZIP在解决Redis大Key方面的应用》一文中我使用GZIP算法可以将JSON格式数据的大小缩小88%从而节省了大量的存储和带宽资源,本文介绍另一种JAVA对象序列化神器——ProtoBuf(ProtocolBuffers(),它是由Google开发的一种用于序列化结构化数据的高效、......
  • Swift解析json三种方式
    在Swift中解析本地JSON文件有多种形式,以下是其中几种常用的方式:使用Codable协议:使用Codable协议是Swift中解析JSON的推荐方式。首先,你需要定义一个对应的数据模型,该模型需要符合Codable协议。然后使用JSONDecoder对象将JSON数据解析为对应的数据模型对象。......
  • Codable解析JSON
    当然可以!下面我会详细讲解如何在Swift中解析JSON文件,使用Codable协议的方法。示例:解析一个简单的JSON文件假设我们有一个名为example.json的JSON文件,内容如下:{"name":"JohnDoe","age":30}第一步:定义数据模型首先,我们需要定义一个与JSON数据结构......