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一样的日志配置方式
- "1.0" encoding="UTF-8"?>
- <configuration>
- <appender enabled="true" name="console">
- <type>consoletype>
- <pattern>[%D %T] [%L] (%S) %Mpattern>
-
- appender>
- <root>
- <level>infolevel>
- <appender-ref ref="testfile" />
- <appender-ref ref="logstash" />
- root>
- configuration>
配置项目简单而清晰;非常容易理解,非常容易修改调整为自己的项目所用。在配置文件里,可以指定日志的输出级别,日志记录的方式,日志输出的格式,日志追踪的范围等等。 修改不同的配置项,实现不同的输出效果。
完整的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日志支持

配置方式
- <appender enabled="true" name="logstash">
- <type>sockettype>
- <pattern>[%D %T %m] [%L][%l] (%S) %Mpattern>
- <property name="endpoint">192.168.56.1:12124property>
- <property name="protocol">udpproperty>
- appender>
TCP日志支持

配置方式
- <appender enabled="true" name="logstash">
- <type>sockettype>
- <pattern>[%D %T %m] [%L][%l] (%S) %Mpattern>
- <property name="endpoint">192.168.56.1:12124property>
- <property name="protocol">tcpproperty>
- <property name="retry">-1property>
- <property name="interval">30property>
- <property name="check">falseproperty>
- appender>
更多信息可从GITHUB中获取
http://github.com/gohutool/log4go
