• Stars
    star
    273
  • Rank 150,780 (Top 3 %)
  • Language
    Go
  • License
    BSD 3-Clause "New...
  • Created over 10 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

go高性能日志库, 支持日志格式化, 文件切割,压缩等特性

go-logger 是golang 的极简日志库

日志打印:调用 Debug(),Info(),Warn(), Error() ,Fatal() 日志级别由低到高 级别概念 功能用法类似java日志工具log4j 或 python的logging

设置日志打印格式:

如: SetFormat(FORMAT_SHORTFILENAME|FORMAT_DATE|FORMAT_TIME)
FORMAT_SHORTFILENAME|FORMAT_DATE|FORMAT_TIME 为默认格式
不调用SetFormat()时,使用默认格式

无其他格式,只打印日志内容	FORMAT_NANO	无格式
长文件名及行数			FORMAT_LONGFILENAME	全路径
短文件名及行数			FORMAT_SHORTFILENAME	如:logging_test.go:10
精确到日期			FORMAT_DATE		如:2023/02/14
精确到秒				FORMAT_TIME		如:01:33:27
精确到微秒			FORMAT_MICROSECNDS

打印结果形如:[DEBUG]2023/02/14 01:33:27 logging_test.go:10: 11111111111111
若需要自定义格式 只需要 SetFormat(FORMAT_NANO) ,既可以去掉原有格式。

日志级别

ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF
默认日志级别为ALL,说明:

若设置 INFO
如:SetLevel(INFO)
则 所有 Debug("*********")   不再打印出来
所以调试阶段,常设置为默认级别ALL,或DEBUG,打印出项目中所有日志,包括调试日志
若设置 OFF
SetLevel(OFF)
则 所有日志不再打印出来
所以正式环境,常设置为ERROR或以上的日志级别,项目中Debug(),Info(),warn()等日志不再打印出来,具体视实际需求设置

需将日志写入文件时,则要设置日志文件名
使用全局对象log时,直接调用设置方法:

SetRollingDaily()		按日期分割
SetRollingByTime()		可按 小时,天,月 分割日志
SetRollingFile()		指定文件大小分割日志
SetRollingFileLoop()		指定文件大小分割日志,并指定保留最大日志文件数

需要多实例指定不同日志文件时:

log1 := logger.NewLogger()
log1.SetRollingDaily("", "logMonitor.log")
 
log12:= logger.NewLogger()
log2.SetRollingDaily("", "logBusiness.log")

1. 按日期分割日志文件

log.SetRollingDaily("d://foldTest", "log.txt")
每天按 log_20221015.txt格式 分割
若 log_20221015.txt已经存在,则生成 log_20221015.1.txt ,log_20221015.2.txt等文件

log.SetRollingByTime("d://foldTest", "log.txt",MODE_MONTH)
按月份分割日志,跨月时,保留上月份日志,如:
	log_202210.txt
	log_202211.txt
	log_202212.txt

log.SetRollingByTime("d://foldTest", "log.txt",MODE_HOUR)
按小时分割日志, 如:
	log_2022101506.txt
	log_2022101507.txt
	log_2022101508.txt

2. 按文件大小分割日志文件

log.SetRollingFile("d://foldTest", "log.txt", 300, MB)
按文件超过300MB是,按log.1.txt,log.2.txt 格式备份
目录参数可以为空,则默认当前目录。

log.SetRollingFileLoop(`d://foldTest`, "log.txt", 300, MB, 50) 
设置日志文件大小最大为300M
日志文件只保留最新的50个

控制台日志设置

全局log:SetConsole(false)控制台不打日志,默认值true
实例log:log.SetConsole(false)控制台不打日志,默认值true

打印日志示例:

//SetRollingFile("", "log.txt", 1000, KB)  设置日志文件信息
//SetRollingFileLoop(``, "log.txt", 300, MB, 50)   设置日志文件大小300M,最多保留50个最近的日志文件
//SetRollingByTime(``, "log.txt", MODE_MONTH) 按月份分割日志
//SetRollingByTime(``, "log.txt", MODE_HOUR)  按小时分割日志
//SetRollingByTime(``, "log.txt", MODE_DAY)  按天分割日志与调用SetRollingDaily("", "log.txt") 作用相同

// SetConsole(false)  控制台打印信息,默认true
Debug("11111111")
Info("22222222")
SetFormat(FORMAT_DATE | FORMAT_SHORTFILENAME) //设置后,下面日志格式只打印日期+短文件信息
Warn("333333333")
SetLevel(FATAL) //设置为FATAL后,下面Error()级别小于FATAL,将不打印出来
Error("444444444")
Fatal("5555555555")

/*获取新的log实例,要求不同日志文件时,使用多实例对象*/
log := NewLogger()
/*按日期分割日志文件*/
//log.SetRollingDaily("", "log.txt")	
/*按日志文件大小分割日志文件*/
// log.SetRollingFile("", "log.txt", 3, MB)
/* 设置打印级别 OFF,DEBUG,INFO,WARN,ERROR,FATAL*/
//log.SetLevel(ALL) 默认ALL.

/* 日志写入文件时,同时在控制台打印出来,设置为false后将不打印在控制台,默认值true*/
// log.SetConsole(false)
log.Debug("aaaaaaaaaaaaa")
log.SetFormat(FORMAT_LONGFILENAME) //设置后将打印出文件全部路径信息
log.Info("bbbbbbbbbbbb")
log.SetFormat(FORMAT_MICROSECNDS | FORMAT_SHORTFILENAME)//设置日志格式,时间+短文件名
log.Warn("ccccccccccccccc")
log.SetLevel(FATAL) //设置为FATAL后,下面Error()级别小于FATAL,将不打印出来
log.Error("dddddddddddd")
log.Fatal("eeeeeeeeeeeee")

More Repositories

1

tim

Tim is a decentralized and distributed instant messaging engine
Go
373
star
2

wfs

WFS File Storage System
Go
224
star
3

dom4g

golang 的 xml 处理库
Go
52
star
4

zkfire

zkfire是openfire的一套集群实现
46
star
5

tklog

lightweight and efficient rust structured log library with support for log levels, file segmentation, compressed archiving
Rust
43
star
6

tldb

distributed database
Go
34
star
7

json4g

json4g 是json 处理库,方便处理结构复杂的json文档
Go
32
star
8

jdao

Java Orm Framework
Java
24
star
9

gdao

Go Orm Framework
Go
23
star
10

webtim

web im projects implemented using timjs in tim
JavaScript
17
star
11

timgo

tim client in go
Go
13
star
12

atim

tim client in java
Java
11
star
13

wfs-jclient

wfs client in java
Java
8
star
14

tlmq-j

mq client for tldb
Java
7
star
15

wfs-goclient

wfs client in go
Go
6
star
16

tlmq-go

tldb mq client
Go
5
star
17

wfs4k

wfs的kotlin实现版本
Kotlin
5
star
18

webtim-deploy

webtim的各个操作系统本地部署脚本
4
star
19

dbware

数据库代理服务器
Java
3
star
20

gofer

tool library for go
Go
2
star
21

wfs4j

wfs的java实现版本
Java
2
star
22

Tim-Practical-Article

tim实践系列文章
2
star
23

wfs-rsclient

wfs client in rust
Rust
2
star
24

thriftjson

让thrift兼容原生json数据调用的解决方案
Java
2
star
25

jdaodemo

Jdao Test Demo
Java
1
star
26

gdaodemo

gdao test demo
Go
1
star
27

timkotlin

tim服务的kotlin客户端
Kotlin
1
star
28

simplelog

Fast, simple logging in go
Go
1
star
29

jedisproxy

jedisproxy 是对jedis的一层封装,主要对获取客户端操作对象,释放资源操作做了一层封装 让代码更加简洁
Java
1
star
30

ethchat

chat contracts based on solidity
Solidity
1
star
31

admintim

management interface for tim in python
Python
1
star
32

tlorm-go

go orm for tldb database
Go
1
star
33

timjs

tim client in javascript
JavaScript
1
star
34

tim-protocol

protocol of tim by the popular programming language
C
1
star
35

videojoin

js achieve video can be played continuously
JavaScript
1
star
36

tlnet

http service framework
Go
1
star
37

wfs-pyclient

wfs client in python
Python
1
star