GO语言里的Log4j
Log4j是JAVA语言里提供日志处理的一个常见的包, 通过Log4j的API的调用,开发者可以很方便的在程序里实现日志的打印和记录的功能;同样的在GO语言的项目里,有时也需要一些处理日志输出和记录的功能要求;在GO语言里也内置了log包实现了简单的日志服务;来处理简单的日志处理,GO语言里也有logrus,zap这样功能较全面一些的日志处理库, 来处理复杂场景下的日志业务, log功能过于简单,logrus,zap使用起来又过于复杂;今天这个文章咱们介绍一个GO语言里用来处理日志的一个工具包log4go;这个工具即log包一样使用起来简单易用,又能进行一些较复杂业务的场景需求。
github.com/gohutool/log4go
在项目中通过
import (
"github.com/gohutool/log4go"
)
就可以将log4go这个工具包引入到自己的项目里。
笔者多年的Java开发情节,特别喜欢log4go也提供了类似于log4j一样的日志配置方式
console
[%D %T] [%L] (%S) %M
info
配置项目简单而清晰;非常容易理解,非常容易修改调整为自己的项目所用。在配置文件里,可以指定日志的输出级别,日志记录的方式,日志输出的格式,日志追踪的范围等等。 修改不同的配置项,实现不同的输出效果。
完整的log4go的接口文档;可以访问以下网址
http://log4go.googlecode.com
Log4GO的日志输出方式,采用的是异步日志输出的方式,日志的输出不影响主要业务程序的调用性能;
使用Log4go的代码
import (
"github.com/gohutool/log4go"
"testing"
"time"
)
var logger = log4go.LoggerManager.GetLogger("com.hello")
func TestLoggerExample(t *testing.T) {
log4go.LoggerManager.InitWithXML("./example.xml")
logger.Info("hello")
logger.Info("hello")
time.Sleep(1 * time.Second)
logger.Error("hello")
time.Sleep(3 * time.Second)
}
输出的效果
[2022/04/06 15:17:59 CST 299] [INFO][com.hello] (github.com/gohutool/log4go/examples.TestLoggerExample:73) hello
[2022/04/06 15:17:59 CST 299] [INFO][com.hello] (github.com/gohutool/log4go/examples.TestLoggerExample:72) hello
[2022/04/06 15:18:00 CST 299] [EROR][com.hello] (github.com/gohutool/log4go/examples.TestLoggerExample:75) hello
Log4GO除了支持标准控制台输出的方式,还内置了文件输出方式, XML输出方式,TCP/IP协议输出方式,和UDP协议输出方式;同时还非侵入式的扩展方式,来扩展新的输出方式
文件输出
UDP日志支持
配置方式
socket
[%D %T %m] [%L][%l] (%S) %M
192.168.56.1:12124
udp
TCP日志支持
配置方式
socket
[%D %T %m] [%L][%l] (%S) %M
192.168.56.1:12124
tcp
-1
30
false
更多信息可从GITHUB中获取
http://github.com/gohutool/log4go