BIND在默认情况下,把日志消息写到(RHEL/CentOS)/var/log/messages文件中,而记录的内容非常少,主要就是启动、关闭的日志记录和一些严重错误的消息。如果需要详细记录服务器的运行状况,需要对全局配置文件的logging块中进行配置(下图中的②)。
logging {
channel <string>; {
file log_file [versions number|unlimited] [size sizespec]; \
|syslog optional_facility;|null;|stderr; ①
severity <logseverity>;; ②
print-time < yes|no >;; ③
print-severity <yes|no>;; ④
print-category <yes|no>;; ⑤
};
category <string>; { <string>;; ... };
};
在日志配置中主要有channel(通道)、category(类别)二种定义。
1. channel用于指定日志发送目标,其中channel <string>用下用于指定通道名称,其他参数含义如下。
(1)①:用于指定日志发送的目标。
file:将日志输入到<logfile>中指定的文件中,这里所指定的路径是一个相对路径,实际路径需要权限全局配置文件options块中direcotry决定,不管指定什么路径named用户(BIND服务默认用户)必须有写权限。versions指定允许同时存在多少个版本的日志文件,比如指定3个版本(version 3),就会保存logfile.log、logfile.log0、logfile.log1 和logfile.log2,然后建立一个新的log_file.log进行写入,unlimited表示无限制写入(默认值)。size指定文件大小的上限,如果只指定了size而没有指定versions,当文件达到指定的上限时,BIND将停止写入该日志文件。
syslog optional_facility:将日志输入到syslog,其中optional_facility是syslog的设备名。
null:将日志输入到空设备(/dev/zero)。
stderr:将日志输入到标准错误输出,默认为屏幕。
(2)②:指定日志的级别。在BIND中主要有以下几个级别(按照严重性从高到低)critical(比error量多严重的错误信息,这个crit是临界点critical的缩写)、error(一些重大的错误信息,比如配置文件的某些值造成该服务无法启动的信息说明,通常由error的错误通知)、warning(可能有错误,但是还不至于影响到服务远行的信息)、notice(比info更需要被注意的一些信息)、info(一些基本的信息说明)、debug [level](当需要进行错误检查或忽略某些服务的信息时使用)、dynamic(一个特殊的值,它匹配服务器当前的调试级别定义了某个严重性级别后,系统会记录包括该级别以及比该级别更严重的级别的所有消息。比如定义级别为error,则会记录critical和error两个级别的信息)。
(3)③:指定在日志中是否需要写入时间。
(4)④:指定在日志中是否需要写入消息级别。
(5)⑤:指定在日志中是否需要写入日志类别。
2. category用于指定需要记录的内容。
(1)client:处理客户端请求。
(2)config:配置文件分析和处理。
(3)database:同BIND内部数据库相关的消息,用来存储区数据和缓存记录。
(4)default:匹配所有未明确指定通道的类别。
(5)dnssec:处理DNSSEC签名的响应。
(6)general:包括所有未明确分类的BIND消息。
(7)lame-servers:发现错误授权。
(8)network:网络操作。
(9)notify:区更新通知消息。
(10)queries:查询日志。
(11)resolver:名字解析,包括对来自解析器的递归查询信息。
(12)security:批准/非批准的请求。
(13)update:动态更新事件。
(14)xfer-in:从远程名字服务器到本地名字服务器的区传送。
(15)xfer-out:从本地名字服务器到远程名字服务器的区传送。
在上图所示的配置中logging块定义的作用是:将错误级别为dynamic的日志记录在data/named.run中,对该日志文件大小不作限制,而在下面的例子的作用是:定义一个名为bind_log的通道目标为bind.log文件,其文件大小上限为50M,保存三个版本,记录等级为notice的日志,同时记录时间及日志类型,并将所有查询日志发送到该通道。
logging {
channel bind_log {
file "bind.log" versions 5 size 50m;
severity notice;
print-time yes;
print-category yes;
};
category queries {
bind_log
};
};