使用Log4php重定向php日志(自定义应用程序)到syslog-ng

时间:2012-09-06 12:06:23

标签: php syslog log4php syslog-ng

我有一个在客户端上运行的自定义应用程序,它使用php,其日志由log4php.properties控制(比如说DEBUGINFO)但是,除了现有的日志记录设置,我希望将这些日志发送到syslog-ng正在运行的服务器。

下面是我在客户端(运行php应用程序)的syslog-ng配置 文件 - /etc/syslog-ng/syslog-ng.conf条目,

destination loghost {
tcp("192.168.1.123" port(5140));
};
log {
source(src);
destination(loghost);
};

在客户log4php.properties上, log4php.appender.A2=LoggerAppenderSyslog
log4php.appender.A2.MaxFileSize=10MB
log4php.appender.A2.Priority=DEBUG
log4php.appender.A1.layout.ConversionPattern="%d{d M Y} %d{ABSOLUTE} %X{server.REMOTE_ADDR} %c{2} %-5p %m %n"

但是,我能够在一个名为 - user-log的文件中查看我的应用程序在syslog文件夹下生成的日志 - 我的问题是 - 如何自定义日志条目?是否可以将这些日志移动到其他文件名?

任何指针都非常有帮助。

感谢。

1 个答案:

答案 0 :(得分:0)

请注意,当前版本的log4php不推荐使用属性文件格式。请升级到更好的格式。我总是喜欢本机PHP数组,但XML也能很好地工作。

您的配置在某些细节上没有意义:

  • syslog appender没有MaxFileSize。
  • 布局应为appender“A2”,而不是“A1”

缺少一些数据:

  • 如果您不喜欢默认的“Apache lopg4php”,则应提供一个标识字符串。
  • 您要登录哪个设施?默认为“USER”。
  • 您想要使用哪个优先级?如果您定义不覆盖优先级,则此处使用已记录事件的日志级别,但log4php提供的级别并未完全映射到syslog提供的级别。在这里使用定义的优先级可能是一个很好的开始。

有关详细信息,请参阅文档:http://logging.apache.org/log4php/docs/appenders/syslog.html