Log4j的配置
log4j.rootLogger=INFO, stdout,syslog
log4j.appender.syslog=org.apache.log4j.net.SyslogAppender
log4j.appender.syslog.SyslogHost= 你的linux地址
log4j.appender.syslog.Facility=local6
log4j.appender.syslog.header=true
log4j.appender.syslog.Threshold=INFO
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
Linux端的配置
- Linux 安装rsyslog服务
[root@localhost ~]#yum -y install rsyslog
- 更新一下yum的其他包
[root@localhost ~]#yum update
- 编辑/etc/sysconfig/rsyslog,编辑为以下内容
# Options to syslogd
# -m 0 disables 'MARK' messages.
# -r enables logging from remote machines
# -x disables DNS lookups on messages recieved with -r
# See syslogd(8) for more details
SYSLOGD_OPTIONS="-r -m 0"
- 编辑/etc/rsyslog.conf,编辑为以下内容
1)允许rsyslog后台进程在TCP/UDP协议的514端口上接收日志信息,rsyslog后台进程是可以同时监听TCP/UDP连接的。
15,16,19,20前面的#去掉
2)在#### GLOBAL DIRECTIVES ####前添加下面的内容:
# 该文件可以修改为你说需要的的任何文件
$template RemoteLogs,"/var/log/devicelog/agent.log"
*.* ?RemoteLogs
& ~
#排除本地主机IP日志记录,只记录远程主机日志
fromhost-ip, !isequal, "127.0.0.1"
?Remote
& ~
(说明:第一行$template 定义模板名称RemoteLogs(“RemoteLogs” 可以为其它名字),日志存入到/var/log/devicelog路径下。而日志文件名则依据发送远程日志的机器名及应用程序名来定义。
第二行*.* ?RemoteLogs暗含运行用模板RemoteLogs于所有的接收日志。
第三行& ~则告诉rsyslog后台进程停止进一步去处理日志信息,即不对它们进行本地化写入,它是代表一个重定向规则。如果没有这一行,则意味着接收到的日志会写入两次,一次如前两行写的方式写,第二次则以本地日志记录的方式写入。运行这个规则的另一个结论则是日志服务器自己的日志信息只会写入到依照机器主机名命名的文件中。)
5. 重启服务
service rsyslog restart
- 注意:记得关闭防火墙
- 本文文字和图片源自 https://www.jianshu.com/p/5563fc09952b