liuwl2009 发表于 2013-2-4 12:52:32

Linux中syslog的使用

logger 是一个shell 命令接口,可以通过该接口使用Syslog的系统日志模块,还可以从命令行直接向系统日志文件写入一行信息。

日志的级别
facility:

auth       -用户授权
authpriv   -授权和安全
cron       -计划任务:at ,cron
daemon   -系统守护进程
kern       -与内核有关系的信息
lpr      -与打印服务有关的信息。
mail       -与电子邮件有关的信息
news       -来自新闻服务器的信息
syslog   -由 syslog 生成的信息
user       -用户的程序生成的信息,默认。
uucp       -由 uucp 生成的信息
local0~7   -来定义本地策略

level:

level定义消息的紧急程度。按严重程度由高到低顺序排列为:emerg =panic(该系统不可用)
alert    -需要立即采取的动作
crit   -临界状态
err      -错误状态。等同error
warning-预警信息,等同warn
notice   -正常但是要注意
info   -正常消息
debug    -调试
none   -一般的信息

解决方法如下:

1.在/var/log目录下新建osalog文件夹:
touch osalog

2.编辑/etc/rsyslog.conf

vim /etc/rsyslog.conf

为了使local6的日志不记录在messages文件里,配置文件做如下修改:
# Don't log private authentication messages!*.info;mail.none;authpriv.none;cron.none       /var/log/messages
中加入 ;local6.none
# Don't log private authentication messages!*.info;mail.none;authpriv.none;cron.none;local6.none       /var/log/messages

3.重启syslog服务
为了使local6所有级别的日志都记录在osalog里,配置文件做如下修改:
添加如下两行
#osa loglocal6.info                                             /var/log/osalog

注意:
此处的local6.info是Linux系统中facility和level进行组合。

3.java中实现方法
1)通过Java调用Linux系统中logger命令向syslog中写日志:
ProcessBuilder pb = new ProcessBuilder("logger", errorString + "("+ className.getName() + ")", "-t", tagMessage, "-p","local6.info ");

2)在log4j的配置文件中做如下配置:
log4j.appender.rsyslog = org.apache.log4j.net.SyslogAppenderlog4j.appender.rsyslog.SyslogHost= localhostlog4j.appender.rsyslog.Facility = local6log4j.appender.rsyslog.layout = org.apache.log4j.TTCCLayout
页: [1]
查看完整版本: Linux中syslog的使用