log4j可以将日志写到远程服务器(Linux服务器)上。
直接在log4j.properties文件中或者log.xml文件中配置即可,这里只讲log4j.properties中怎么配置。
syslog方式
先在Linux服务器上配置
- 修改 syslog 的配置文件
/etc/rsyslog.conf
在文件最后加上如下内容:
#文件可自定义(local6中的6可以改成其它数字,但是不能改成跟文件中已有的一样,如local7文件中已有了)
local6.* /var/log/agent.log
- 打开
/etc/sysconfig/rsyslog
文件,在SYSLOGD_OPTIONS中追加"-r"
。
如下:
# Options for rsyslogd
# Syslogd options are deprecated since rsyslog v3.
# If you want to use them, switch to compatibility mode 2 by "-c 2"
# See rsyslogd(8) for more details
SYSLOGD_OPTIONS="-r"
- 重新启动 syslog 服务
systemctl restart rsyslog.service
- 可以用以下命令测试我们的配置对不对
/usr/bin/logger -p local6.info
如:
[hyj@hadoop102 data]$ /usr/bin/logger -p local6.info
helloFlume
[root@hadoop102 log]# pwd
/var/log
[root@hadoop102 log]# tail -f agent.log
Mar 26 14:50:45 hadoop102 hyj: helloFlume
配置log4j
在 log4j.properties文件中配置如下内容:
log4j.rootLogger=INFO,syslog
log4j.appender.syslog=org.apache.log4j.net.SyslogAppender
log4j.appender.syslog.SyslogHost= hadoop102 #此处为你的服务器名或IP地址
log4j.appender.syslog.Threshold=INFO #日志输出的最小级别
log4j.appender.syslog.Facility=local6 #这里要跟上面配置的 local6.* /var/log/agent.log 中的local6一样
log4j.appender.syslog.layout=org.apache.log4j.PatternLayout
log4j.appender.syslog.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p --- [%20t] %-130c:(line:%4L) : %m%n
demo|FATAL|2014-Jul-03 14:34:34,194|main|com.c4c.logdemo.App:(line:15)|send a log
端口方式
- log4j.properties文件中配置如下内容:
log4j.rootLogger=INFO,to11HitLog
# Socket Appender
log4j.appender.to11HitLog = org.apache.log4j.net.SocketAppender
#往hadoop102的44444端口发送日志数据
log4j.appender.to11HitLog.Port = 44444
log4j.appender.to11HitLog.RemoteHost = hadoop102 #此处为你的服务器名或IP地址
log4j.appender.to11HitLog.ReconnectionDelay = 10000
- 在hadoop102服务器上 监听本机的44444端口
[hyj@hadoop102 redis-6.2.1]$ nc -lp 44444