如何使用Log4j将日志写入Linux文件中

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端的配置

  1. Linux 安装rsyslog服务
[root@localhost ~]#yum -y install rsyslog
  1. 更新一下yum的其他包
[root@localhost ~]#yum update
  1. 编辑/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"
  1. 编辑/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 
  1. 注意:记得关闭防火墙
  2. 本文文字和图片源自 https://www.jianshu.com/p/5563fc09952b
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值