-
Notifications
You must be signed in to change notification settings - Fork 19
Log4j
很多人分不清1.x和2.x的区别,很简单,你用properties文件配置的就是1.x,用xml文件配置的话就是2.x。估计大多数用的还是Log4j1。
最推荐的是使用异步的 Http Appender,本项目实现的异步HttpAppender依托于Apache的Http-Client,同时有时间触发器与日志数量触发器,将日志批量收集以后压缩(注:会自动根据正文大小选择是否使用压缩)发送到服务器,且能与服务器保持长连接以达到极高性能的日志传输。
log4j.rootLogger=all,lofka
log4j.appender.lofka=com.github.tsingjyujing.lofka.appender.log4j.HttpAsyncAppender
log4j.appender.lofka.application=你的应用名称
log4j.appender.lofka.target=Lofka服务器地址
log4j.appender.lofka.interval=100
log4j.appender.lofka.maxBufferSize=100
其中,interval是时间触发极限(单位:毫秒),maxBufferSize是日志堆积量出发极限(单位:条),当两条中任意一条被触发的时候就会发送日志。
服务器地址的配置形如:http://lofka.exmaple.com/
或者http://172.16.9.179:9500/
,总而言之,取决于你的Lofka服务器和网络配置。
应用名称可以随便定义,但是推荐的实现参考最佳实现中描述的
如果你有较高的实时性需求,即使毫秒级的误差也会给你造成麻烦,那么你可以选择使用同步日志发送器,在每收到一条日志的时候日志系统都会单独发送。
log4j.rootLogger=all,lofka
log4j.appender.lofka=com.github.tsingjyujing.lofka.appender.log4j.HttpAppender
log4j.appender.lofka.application=你的应用名称
log4j.appender.lofka.target=Lofka服务器地址
如果你不能引入第三方的包,那么还有一个方案给你选择,就是利用SocketServer将你的原生日志对象接收并且转码。
log4j.appender.socket=org.apache.log4j.net.SocketAppender
log4j.appender.socket.RemoteHost=Lofka服务器IP地址
log4j.appender.socket.port=9501
log4j.appender.socket.application=你的应用名称
log4j.appender.socket.locationInfo=true
其中需要注意的是,application在Log4j内部的实现原理是放在MDC中,SocketServer特地将其提取出来作为app_name使用。
由于Log4j 1.2.x 本身的设计缺陷,或导致写入死锁(理论上说任何Appender都可能死锁,但是SocketAppender涉及到Java原生的序列化,速度会更慢一些,出现死锁的概率更大)。
任何能够不使用Log4j 1.x的场合都应该弃用Log4j 1.x
参考资料: