log4j中将日志发送到远程服务器

原创
2013/06/22 18:09
阅读数 2.6W

1.服务端配置

1)服务端配置文件log4j-server.properties

#Define a narrow log category. A category like debug will produce some extra logs also from server itself
log4j.rootLogger=ERROR, file

#Define how the socket server should store the log events
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=application-error.log
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%d] [%t] [%m]%n
2)服务端启动监听
java -classpath c:\log4j-1.2.17.jar     org.apache.log4j.net.SimpleSocketServer
4712 c:\log4j-server.properties
注意,log4j-1.2.17.jar和配置文件都放在C盘,具体指定好位置即可,4712是监听的端口号。

2.客户端配置

1)客户端配置文件log4j.properties

#Define the log4j configuration for local application
log4j.rootLogger=ERROR, server

#We will use socket appender
log4j.appender.server=org.apache.log4j.net.SocketAppender

#Port where socket server will be listening for the log events
log4j.appender.server.Port=4712

#Host name or IP address of socket server
log4j.appender.server.RemoteHost=localhost

#Define any connection delay before attempting to reconnect
log4j.appender.server.ReconnectionDelay=10000
2)代码中使用
private static final Logger logger = LoggerFactory.getLogger(xx.class);
logger.error("test name:{}",guolei);

3.其他注意点

由于我们在项目中并不是要将所有的日志全部发送到远程服务器,而只是发送部分类中的,需要做特殊配置。如下:

log4j.logger.com.wanmei.marketing.RuleShowAction=INFO,server

展开阅读全文
打赏
0
177 收藏
分享
加载中
目前正在考虑用这种方式收集日志。担心性能问题。楼主有没有考虑过别的解决方案?
2015/08/21 13:53
回复
举报
lateron博主

引用来自“yubingzhe”的评论

引用来自“夕水溪下”的评论

引用来自“yubingzhe”的评论

您对logstash和log4j的连接有研究吗?我看了一下logstash的log4j插件源代码,上面使用的是tcp,但是有个问题,如果使用TCP发送数据会受到网络不稳定或是远端日志收集服务器不稳定的影响,可能会使应用程序受到影响(这是最致命的),请问笔者有这方面的研究吗?

你可以封装下,才用异步的手段,如果是同步,不管是tcp和udp都会受到日志服务器影响

能详细点吗?我是个菜鸟。。。21

利用jms的api,你发一个异步消息。
2014/01/02 11:54
回复
举报

引用来自“夕水溪下”的评论

引用来自“yubingzhe”的评论

您对logstash和log4j的连接有研究吗?我看了一下logstash的log4j插件源代码,上面使用的是tcp,但是有个问题,如果使用TCP发送数据会受到网络不稳定或是远端日志收集服务器不稳定的影响,可能会使应用程序受到影响(这是最致命的),请问笔者有这方面的研究吗?

你可以封装下,才用异步的手段,如果是同步,不管是tcp和udp都会受到日志服务器影响

能详细点吗?我是个菜鸟。。。21
2014/01/02 11:43
回复
举报
lateron博主

引用来自“yubingzhe”的评论

您对logstash和log4j的连接有研究吗?我看了一下logstash的log4j插件源代码,上面使用的是tcp,但是有个问题,如果使用TCP发送数据会受到网络不稳定或是远端日志收集服务器不稳定的影响,可能会使应用程序受到影响(这是最致命的),请问笔者有这方面的研究吗?

你可以封装下,才用异步的手段,如果是同步,不管是tcp和udp都会受到日志服务器影响
2014/01/02 11:32
回复
举报
您对logstash和log4j的连接有研究吗?我看了一下logstash的log4j插件源代码,上面使用的是tcp,但是有个问题,如果使用TCP发送数据会受到网络不稳定或是远端日志收集服务器不稳定的影响,可能会使应用程序受到影响(这是最致命的),请问笔者有这方面的研究吗?
2014/01/02 11:30
回复
举报
lateron博主

引用来自“yubingzhe”的评论

引用来自“疯狂的艺术家”的评论

引用来自“夕水溪下”的评论

引用来自“疯狂的艺术家”的评论

远程发送是tcp的还是udp的?

TCP

他这个可以配置吗,配置成upd的

官方文档写的是:An Appender that delivers events over socket connections. Supports both TCP and UDP.但它怎么支持UDP?或是怎么配置?

http://stackoverflow.com/questions/14774119/how-to-use-log4j-with-udp
2013/12/31 12:35
回复
举报

引用来自“疯狂的艺术家”的评论

引用来自“夕水溪下”的评论

引用来自“疯狂的艺术家”的评论

远程发送是tcp的还是udp的?

TCP

他这个可以配置吗,配置成upd的

官方文档写的是:An Appender that delivers events over socket connections. Supports both TCP and UDP.但它怎么支持UDP?或是怎么配置?
2013/12/31 11:23
回复
举报
官方文档写的是:An Appender that delivers events over socket connections. Supports both TCP and UDP.但它怎么支持UDP?或是怎么配置?
2013/12/31 11:23
回复
举报

引用来自“夕水溪下”的评论

引用来自“疯狂的艺术家”的评论

远程发送是tcp的还是udp的?

TCP

他这个可以配置吗,配置成upd的
2013/06/24 18:21
回复
举报
lateron博主

引用来自“疯狂的艺术家”的评论

远程发送是tcp的还是udp的?

TCP
2013/06/24 18:02
回复
举报
更多评论
打赏
20 评论
177 收藏
0
分享
返回顶部
顶部