将log4j日志写入syslog

MrLiar 2011-10-19

 由于工作需要,这几天研究了一下怎样将log4j的日志写入到syslog中。syslogd是UNIX系统的一个常见的组件,用于执行系统日志记录活动。syslogd从一组日志源(如:/dev/log和/dev/klog)中读取数据,并按/etc/syslog.conf中的说明处理这些日志消息。通过syslog()调用,将应用程序日志消息记录到syslog中。

      log4j是一款相当强大的开源日志工具,他能通过简单的配置将日志发送到文件、数据库、远程网络等各种地方。要在java程序中将log4j的日志信息发送到远程linux服务器的syslog中,也只需一点简单的配置就可以实现。

    第一步,应该修改syslog的配置文件,因为syslog默认的配置是不能接收网络数据的,其配置文件syslog.conf文件通常在 /etc下:在文件中加入:  *.* local5,local7.none;<tab>;<tab>      /usr/adm/network.log     其次  启动syslog需使用:syslogd -r命令,否则不能接收网络数据,同时应注意关掉linux的防火墙。

  第二步,配置log4j的properties文件,加入以下语句:

log4j.appender.syslog=org.apache.log4j.net.SyslogAppender

log4j.appender.syslog.SyslogHost=syslog服务器IP

log4j.appender.syslog.Facility=LOCAL5

log4j.appender.syslog.layout=org.apache.log4j.PatternLayout

               log4j.appender.syslog.layout.ConversionPattern=%d [%t] %p %c - %m %n

  通过以上配置,你在程序中使用log4j时,其日志信息将发送给syslog,具体保存在那里要看syslog.conf文件的

配置,如:*.info;mail.none;authpriv.none;cron.none  /var/log/messages   此句表示,只将info等级的信息保存在

/var/log/messages文件中。(syslog.conf的详细配置网上有很多介绍,这里就不在讲了)

  最后讲一点,如果在程序中修改了log4j配置,可以使用PropertyConfigurator.configureAndWatch("../sslsec/conf/log4j.properties", 1000);命令使log4j自动检查配置文件是否被修改,如修改了则自动使用新的配置而不必重启log4j。

相关推荐