Chinaunix首页 | 论坛 | 博客
  • 博客访问: 161959
  • 博文数量: 48
  • 博客积分: 3000
  • 博客等级: 中校
  • 技术积分: 370
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-08 18:10
文章分类

全部博文(48)

文章存档

2009年(2)

2007年(46)

我的朋友

分类:

2007-07-17 13:22:43

语句语法

logging {
   [ channel channel_name {
     ( file path name
         [ versions ( number | unlimited ) ]
         [ size size spec ]
       | syslog syslog_facility
       | stderr
       | null );
     [ severity (critical | error | warning | notice |
                 info | debug [ level ] | dynamic ); ]
     [ print-category yes or no; ]
     [ print-severity yes or no; ]
     [ print-time yes or no; ]
   }; ]
   [ category category_name {
     channel_name ; [ channel_name ; ... ]
   }; ]
   ...
};

语句定义和使用

logging 语句为域名服务器配置大量日志选项。它的channel 子句与输出方法相关,格式选项和记录级别(severity levels with a name)被用到category 子句中,来确定哪一个级别和哪些变量被记录。

只有一个logging 语句,它可以定义许多个通道和类别。如果没有logging 语句,日志配置将是:

logging {
     category "unmatched" { "null"; };
     category "default" { "default_syslog"; "default_debug"; };
};

子句

所有的日志都输出到一个或多个通道中(channels),如果愿意,可以设置多个通道。

每一个通道定义必须包括一个destination子句,来说明为这个通道选择的信息 是指向一个文件,或者一个专门的日志设备,或者到标准错误输出流,或者丢弃。也可以选择性的规定信息记录级别 (默认是 info),是否包括一个由named生成的时间,字段的名称或者/和记录级别(默认是什么也没有)。

destination 设置成null使所有的日志信息丢弃,那时,channel就没用了。

destination 设置成file ,使通道指向一个文件,它可以包含限制信息:文件最大允许尺寸和(每次打开文件时检查)最多可以有多少个的文件的版本(文件数)。

如果在log file中使用versions 选项,那么 named 将会通过在要打开文件时改名保存很多备份版本的文件,例如,如果选择保留3 个老版的文件lamers.log ,那么每次打开时,lamers.log.1就会被改名成lamers.log.2lamers.log.0 改成 lamers.log.1 lamers.log 改成lamers.log.0。也可以设置成versions unlimited不限制文件的数目。如果size 选项设定了,改名只在文件达到设定的大小时发生,默认也不会保存备份,只对已经存在的日志文件简单进行追加。

size 选项用来限制日志文件无限制的增长。如果文件超过了设定大小,named 进程就会停止向文件写信息,除非它还有一个versions 选项,此时,会进行文件改名(如前段),然后在新文件里继续开始记录。如果没有设置versions 选项,达到设置大小时,记录会停止,直到有其它因素来减少文件大小。默认不设置文件大小最大值。

使用size versions 选项的例子:

channel "an_example_channel" {
    file "example.log" versions 3 size 20m;
    print-time yes;
    print-category yes;
};

syslog 的目标指向系统日志,它的参数是在syslog man 里面列出的日志设备,著名的设备有kern, user, mail, daemon, auth, syslog, lpr, news, uucp, cron, authpriv, ftp, local0, local1, local2, local3, local4, local5, local6 local7,然而不是所有的设备都被所有的操作系统支持, syslog 如何管理信息,发送到指定的设备等在syslog.conf man 中描述。如果你有一个使用很老版本的syslog 的系统,它的openlog()函数只有两个参数,那么这个子句将会被忽略。

severity 子句看起来是syslog重要的内容,除了在这里,他们也可以用在向文件中写入日志。更低记录级别的信息不会被写向通道,更高级别的信息可以被写入通道。

如果使用syslog syslog.conf 首先确定哪些内容最后通过,例如,定义一个通道设备和记录级别为daemon debug但只记录daemon.warning ,此时,syslog.conf 将只使用info notice级别的内容。如果要求记录warning 和更高的内容,那么 syslogd 将记录下所有从通道接收到的信息。

目的为stderr的子句将通道指向系统的标准错误输出,这一般用在服务器前台运行程序,例如,在调试配置文件时。

处于调试模式时,服务器可以提供更多的排错信息。如果服务器的全局排错级别(global debug level)大于0,调试 就会被激活。设置可以通过开始named 时加上-d 和一个正数标志(如 –d 2,或者运行rndc trace来激活。全局排错级别可以设置成0,或者运行(rndc notrace排错模式就会被关闭。 所有服务器的排错信息都有一个级别,更高的级别有更详细的输出,通道需要一个指定的排错记录级别,例如:

channel "specific_debug_level" {
    file "foo";
    severity debug 3;
};

将获得3和高于级别3的错误输出,即使排错模式级别小于3。动态记录通道使用服务器的全局级别来决定记录哪些信息。

如果print-time 设置为on,将记录日期和时间。print-time 可以被指明到syslog 通道,当这通常都是没什么用的,因为syslog 本身记录日期和时间。如果需要print-category,那么信息的类别也会被记录,最后,如果 print-severity 设置为on,那么信息的级别也会被记录。print- 前缀的选项可用于任何组合,总是以下面的顺序打印:time, category, severity。下面是全部三个print- 前缀的例子:

28-Feb-2000 15:05:32.863 general: notice: running

named4个预定义的通道,用于默认的记录,他们如何使用参见Section 6.2.10.2.

channel "default_syslog" {
    syslog daemon;                      // send to syslog's daemon
                                        // facility
    severity info;                      // only send priority info
                                        // and higher
};
 
channel "default_debug" {
    file "named.run";                   // write to named.run in
                                        // the working directory
                                        // Note: stderr is used instead
                                        // of "named.run"
                                        // if the server is started
                                        // with the '-f' option.
    severity dynamic;                   // log at the server's
                                        // current debug level
};
 
channel "default_stderr" {              // writes to stderr
    stderr;
    severity info;                      // only send priority info
                                        // and higher
};
 
channel "null" {
   null;                                // toss anything sent to
                                        // this channel
};

default_debug 通道有特定的属性,它只在服务器的排错级别不是0时产生输出,它通常都写入域名服务的工作目录中的文件named.run

因为安全原因,当用 "-u" 命令选项时,named.run 文件只在named 运行改变成一个新的UID时产生,作为根用户时debug 产生的输出会被丢弃。如果你需要得到这些输出,必须运行服务时加上"-g" 选项,并且重定向标准输出到一个文件。

一旦一个通道被定义,它就不能被重新定义,因此你不能把通道定向到别处,但是可以修改默认的日志的记录的类别。

子句

有许多类别,这样可以发送想要的内容,而不要不想要的部分。如果不给通道指明类别(category),那么将使用默认的类别,如果没有定义默认类别,将会用下面的"default default"

category "default" { "default_syslog"; "default_debug"; };

作为例子,假如你想在文件中记录安全事件,但是又想记录默认的日志事件,需要这样做:

channel "my_security_channel" {
    file "my_security_file";
    severity info;
};
category "security" {
    "my_security_channel";
    "default_syslog";
    "default_debug";
};

丢弃所有的信息,使用null 通道:

category "xfer-out" { "null"; };
category "notify" { "null"; };

下面是可用的类别和描述,以后的版本可能会有更多的类别。

default

默认:默认类别定义那些没有明确设定配置。

general

全部:很多没有归类的东西都在这里。

database

数据库:域名服务器存取区域文件和缓存文件数据库相关的

security

安全:验证和拒绝请求相关。

config

配置:配置文件解析和处理。

resolver

解析器:如递归查询

xfer-in

服务器接收的区域数据

xfer-out

服务器向外发送的区域数据

notify

NOTIFY协议

client

处理客户请求。

unmatched

域名需要的信息,很难判断它的类别,或者对于它,没有匹配的view。一个一行的摘要也会记录在客户的类别,这个类别最好发送给文件或者是标准错误输出(stderr),默认它会发送到空通道(null channel)。

network

网络操作.

update

动态更新。

queries

请求,使用queries 会记录所有的请求。

dispatch

分发接收到的包到处理信息的服务器组。

dnssec

DNSSEC TSIG 协议的处理

lame-servers

故障服务器。远端的服务器因为被错误的配置,被BIND 9 解析时发送查询包,因而发现而记录。

delegation-only

代表。日志查询被强迫为NXDOMAIN,在delegation-only 区域或者在hint stub 区域中宣告 delegation-only

阅读(1211) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~