在 NSWL 客户端系统上自定义日志记录

您可以通过对 NSWL 客户端配置文件 (log.conf) 进行其他修改来自定义 NSWL 客户端系统上的日志记录。使用文本编辑器修改客户端系统上的 log.conf 配置文件。

要自定义日志记录,请使用配置文件定义筛选器和日志属性。

  • 日志筛选器。根据 Web 服务器的主机 IP 地址、域名和主机名筛选日志信息。
  • 日志属性。每个筛选器都有一组关联的日志属性。日志属性定义如何存储过滤的日志信息。

示例配置文件

以下是一个示例配置文件:

##########
# This is the NSWL configuration file
# Only the default filter is active
# Remove leading # to activate other filters
##########
##########
# Default filter (default on)
# W3C Format logging, new file is created every hour or on reaching 10MB file size,
# and the file name is Exyymmdd.log
##########
Filter default
begin default
        logFormat               W3C
        logInterval             Hourly
        logFileSizeLimit        10
        logFilenameFormat       Ex%`{`%y%m%d}t.log
end default
##########
# Citrix ADC caches example
# CACHE_F filter covers all the transaction with HOST name www.netscaler.com and the listed server ip's
##########
#Filter CACHE_F HOST www.netscaler.com IP 192.168.100.89 192.168.100.95 192.168.100.52 192.168.100.53 ON
##########
# netscaler origin server example
# Not interested in Origin server to Cache traffic transaction logging
##########
#Filter ORIGIN_SERVERS IP 192.168.100.64 192.168.100.65 192.168.100.66 192.168.100.67 192.168.100.225 192.168.100.226 192.168.
100.227 192.168.100.228 OFF
##########
# netscaler image server example
# all the image server logging.
##########
#Filter IMAGE_SERVER HOST www.netscaler.images.com IP 192.168.100.71 192.168.100.72 192.168.100.169 192.168.100.170 192.168.10
0.171 ON
##########
# NCSA Format logging, new file is created every day midnight or on reaching 20MB file size,
# and the file name is /datadisk5/netscaler/log/NS<hostname>/Nsmmddyy.log.
# Exclude objects that ends with .gif .jpg .jar.
##########
#begin ORIGIN_SERVERS
#       logFormat               NCSA
#       logInterval             Daily
#       logFileSizeLimit        40
#       logFilenameFormat       /datadisk5/ORGIN/log/%v/NS%`{`%m%d%y}t.log
#       logExclude              .gif .jpg .jar
#end ORIGIN_SERVERS

##########
# NCSA Format logging, new file is created every day midnight or on reaching 20MB file size,
# and the file name is /datadisk5/netscaler/log/NS<hostname>/Nsmmddyy.log with log record timestamp as GMT.
##########
#begin CACHE_F
#       logFormat               NCSA
#       logInterval             Daily
#       logFileSizeLimit        20
#       logFilenameFormat /datadisk5/netscaler/log/%v/NS%`{`%m%d%y}t.log
#       logtime                 GMT
#end CACHE_F

##########
# W3C Format logging, new file on reaching 20MB and the log file path name is
# atadisk6/netscaler/log/server's ip/Exmmyydd.log with log record timestamp as LOCAL.
##########
#begin IMAGE_SERVER
#       logFormat               W3C
#       logInterval             Size
#       logFileSizeLimit        20
#       logFilenameFormat /datadisk6/netscaler/log/%AEx%`{`%m%d%y}t
#       logtime                 LOCAL
#end IMAGE_SERVER

##########
# Virtual Host by Name firm, can filter out the logging based on the host name by,
##########

#Filter VHOST_F IP 10.101.2.151 NETMASK 255.255.255.0
#begin VHOST_F
#       logFormat               W3C
#       logInterval             Daily
#       logFileSizeLimit        10
logFilenameFormat /ns/prod/vhost/%v/Ex%`{`%m%d%y}t
#end VHOST_F

########## END FILTER CONFIGURATION ##########

创建过滤器

您可以使用配置文件 (log.conf) 中的默认筛选器定义,也可以修改筛选器或创建新筛选器。您可以创建多个日志筛选器。

注意:统一日志记录用于记录未定义筛选器的事务,如果启用默认筛选器,则使用默认筛选器。可以通过仅定义默认筛选器来完成所有服务器的统一日志记录。

如果服务器承载多个网站,并且每个网站都有自己的域名,并且每个域都与虚拟服务器关联,则可以配置 Web 服务器日志记录以为每个网站创建单独的日志目录。下表显示了用于创建筛选器的参数。

参数 说明
filterName 筛选器的名称。筛选器名称可以包含字母数字字符,且不得超过 59 个字符。超过 59 个字符的过滤器名称将被截断为 59 个字符。
HOST 名称 正在为其记录事务的服务器的主机名。
IP ip 要记录事务的服务器的 IP 地址(例如,如果服务器有多个域,具有一个 IP 地址)。
IP ip 2…ip n: 多个 IP 地址(例如,如果服务器域有多个 IP 地址)。
ip6 ip 要记录事务的服务器的 IPv6 地址。
IP ip NETMASK mask 要在子网上使用的 IP 地址和网络掩码组合。
ON | OFF 启用或禁用过滤器以记录事务。如果未选择任何参数,则启用筛选器 (开)。

表 1. 用于创建过滤器的参数

创建过滤器

要创建筛选器,请在 log.conf 文件中输入以下命令:

  • filter <filterName> <HOST name> | [IP<ip> ] | [IP<ip 2...ip n> ] | <IP ip NETMASK mask> [ON | OFF]

  • filter <filterName> <HOST name> | [IP6 ip/<prefix length>] [ON | OFF]

为虚拟服务器创建筛选器

要为虚拟服务器创建筛选器,请在 log.conf 文件中输入以下命令:

filter <filterName> <VirtualServer IP address>

示例

在以下示例中,您指定的 IP 地址为 192.168.100.0,网络掩码为 255.255.255.0。该过滤器适用于 IP 地址 192.168.100.1 到 192.168.100.254。

Filter F1 HOST www.netscaler.com ON
Filter F2 HOST www.netscaler.com IP 192.168.100.151 ON
Filter F3 HOST www.netscaler.com IP 192.168.100.151 192.165.100.152 ON
Filter F4 IP 192.168.100.151
Filter F5 IP 192.168.100.151 HOST www.netscaler.com OFF
Filter F6 HOST www.netscaler.com HOST www.xyz.com HOST www.abcxyz.com IP 192.168.100.200 ON
Filter F7 IP 192.250.100.0 NETMASK 255.255.255.0
Filter F8 HOST www.xyz.com IP 192.250.100.0 NETMASK 255.255.255.0 OFF
For creating filters for servers having IPv6 addresses.
Filter F9 2002::8/112 ON
Filter F10 HOST www.abcd.com IP6 2002::8 ON

指定日志属性

日志属性将应用于与筛选器关联的所有日志条目。日志属性定义以关键字 BEGIN 开头,以 ENT 结尾,如以下示例所示:

BEGIN <filtername>
 logFormat ...
 logFilenameFormat ...
 logInterval ...
 logFileSize ....
 logExclude ....
 logTime ….
 END

定义中的条目可以包括以下内容:

  • 日志格式指定支持 NCSA、W3C 扩展和自定义日志文件格式的 Web 服务器日志记录功能。

默认情况下,日志格式属性是 w3c。要覆盖,请在配置文件中输入自定义或 NCSA,例如:

     LogFormat NCSA

注意:对于 NCSA 和自定义日志格式,本地时间用于时间戳事务和文件轮换。

**LogInterval** 指定创建新日志文件的时间间隔。使用以下值之一:

-  每小时:每小时创建一个文件。
-  每日:每天午夜都会创建一个文件。默认值。
-  每周:每周日午夜都会创建一个文件。
-  每月:在午夜的第一天创建一个文件。
-  无:当 Web 服务器日志记录开始时,只创建一次文件。</span>

示例

LogInterval Daily

LogFileSizeLimit 指定日志文件的最大大小(以 MB 为单位)。它可以用于任何日志间隔(每周、每月等)。当达到最大文件大小限制或定义的日志间隔时间过去时,将创建文件。

要覆盖此行为,请将大小指定为 log间间间隔属性,以便仅当达到日志文件大小限制时才创建文件。

默认 LogFileSizeLimit 为 10 MB。

示例

LogFileSizeLimit 35
  • logfilenameformat 指定日志文件的文件名格式。文件的名称可以是以下类型:

    • 静态:指定包含绝对路径和文件名的常量字符串。

      动态:指定包含以下格式的表达式:

      • 服务器 IP 地址
      • 日期 (%{格式}t)
      • URL 后缀 (%x)
      • 主机名称 (%v)

示例

LogFileNameFormat Ex%`{`%m%d%y}t.log

这个命令创建第一个文件名作为 Exmmddyy.log,然后每小时创建一个文件名:Exmmddyy.log.0、Exmmddyy.log.1… Exmmddyy.log.n。

示例


     LogInterval size
     LogFileSize 100
     LogFileNameFormat Ex%`{`%m%d%y}t

小心:

在 logfilenameformat 命令中指定的日期格式 %t 将覆盖该筛选器的日志间隔属性。要防止每天创建一个新文件,而不是达到指定的日志文件大小时,请勿在 logfilenameformat 中使用 %t。

  • LogExclude 可防止记录具有指定文件扩展名的事务。

示例:

     LogExclude .html

此命令创建一个日志文件,该文件排除 *.html 文件的日志事务。

LogTime 将日志时间指定为 GMT 或本地。

默认值为:

-  NCSA 日志文件格式:LOCAL
-  W3C 日志文件格式:GMT。

了解 NCSA 和 W3C 日志格式

Citrix ADC 支持以下标准日志文件格式:

  • NCSA 通用日志格式
  • W3C 扩展日志格式

NCSA 通用日志格式

如果日志文件格式为 NCSA,则日志文件以以下格式显示日志信息:

Client_IP_address -User_Name [Date:Time -TimeZone] "Method Object HTTP_version" HTTP_StatusCode BytesSent

若要使用 NCSA 通用日志格式,请在 log.conf 文件的日志格式参数中输入 NCSA。

下表介绍了 NCSA 通用日志格式。

参数 说明
Client_IP_address 客户端计算机的 IP 地址。
用户名 用户名。
日期 交易记录的日期。
时间 完成交易记录的时间。
时区 时区(格林威治标准时间或本地时间)。
方法 请求方法(例如,GET,POST)。
对象 网址。
HTTP_version 客户端使用的 HTTP 版本。
HTTP_StatusCode 响应中的状态代码。
发送的字节数 从服务器发送的字节数。

W3C 扩展日志格式

扩展日志文件包含一系列行,其中包含 ASCII 字符由换行符 (LF) 或序列回车换行符 (CRLF) 终止。日志文件生成器必须遵循运行它们的平台的行终止约定。

对数分析仪必须接受 LF 或 CRLF 形式。每行可以包含指令或条目。如果要使用 W3C 扩展日志格式,请在 log.conf 文件中输入 W3C 作为日志格式参数。

默认情况下,标准 W3C 日志格式在内部定义为自定义日志格式,如下所示:

%`{`%Y-%m-%d%H:%M:%S}t %a %u %S %A %p %m %U %q %s %j %J %T %H %+{user-agent}i %+{cookie} i%+{referer}i

您也可以更改顺序或删除此 W3C 日志格式中的某些字段。例如:

logFormat W3C %`{`%Y-%m-%d%H:%M:%S}t %m %U

W3C 日志条目使用以下格式创建:

#Version: 1.0 #Fields: date time cs-method cs-uri #Date: 12-Jun-2001 12:34 2001-06-12 12:34:23 GET /sports/football.html 2001-06-12 12:34:30 GET /sports/football.html

条目

条目由一系列与单个 HTTP 事务相关的字段组成。字段以空格分隔;Citrix 建议使用制表符。如果未使用特定条目中的字段,则短划线 (-) 标记省略字段。

指令

请参阅有关日志记录过程的 指令表 fpr 信息。以英镑符号 (#) 开头的行包含指令。

示例

以下示例日志文件以 W3C 扩展日志格式显示日志条目:

#Version: 1.0 #Fields: time cs-method cs-uri #Date: 12-Jan-1996 00:00:00 00:34:23 GET /sports/football.html 12:21:16 GET /sports/football.html 12:45:52 GET /sports/football.html 12:57:34 GET /sports/football.html

字段

“字段”指令列出了一系列字段标识符,用于指定每个条目中记录的信息。字段标识符可能具有以下形式之一:

  • 标识符: 与整个交易相关。
  • 前缀标识符: 与由值前缀定义的当事方之间的信息传输有关。
  • 前缀(标头): 指定 HTTP 标头字段标头的值,用于在由值前缀定义的各方之间进行传输。以此方式指定的字段始终具有类型。

下表描述了定义的前缀。

前缀 说明
c 客户端
s 服务器
r 远程
cs 客户端到服务器
sc 服务器到客户端
sr 服务器到远程服务器(代理使用的前缀)
rs 远程服务器到服务器(代理使用的前缀)
x 特定于应用程序的标识符

示例

以下示例是使用前缀的定义标识符:

cs-method: 客户端发送到服务器的请求中的方法。

sc(Referer): 回复中的裁判字段.

c-ip: 客户端的 IP 地址。

标识符

下表介绍了不需要前缀的 W3C 扩展日志格式标识符。

标识符 说明
date 完成交易记录的日期。
time 完成事务的时间。
time-taken 完成交易所花费的时间(以秒为单位)。
bytes 传输的字节数。
cached 记录是否发生缓存命中。零表示缓存未命中。

表 5. W3C 扩展日志格式标识符(无需前缀)

下表描述了需要前缀的 W3C 扩展日志格式标识符。

标识符 说明
IP IP 地址和端口号。
dns DNS 名称。
status 状态代码。
comment 随状态代码返回的注释。
method 这个方法。
url 网址。
url-stem URL 的茎部分。
url-query URL 的查询部分。

表 6. W3C 扩展日志格式标识符(需要前缀)

W3C 扩展日志文件格式允许您选择日志字段。下表显示了这些字段。

字段 说明
日期 完成交易记录的日期。
时间 完成事务的时间。
客户端 IP 客户端的 IP 地址。
用户名 用户名。
服务名称 服务名称,始终是 HTTP。
服务器 IP 服务器 IP 地址。
服务器端口 服务器端口号
方法 请求方法(例如,GET,POST)。
Url 茎 URL 茎。
Url 查询 URL 的查询部分。
HTTP 状态 响应中的状态代码。
发送的字节数 发送到服务器的字节数(请求大小,包括 HTTP 标头)。
接收的字节数 从服务器接收的字节数(响应大小,包括 HTTP 标头)。
所需时间 完成交易所花费的时间(以秒为单位)。
协议版本 客户端正在使用的 HTTP 版本号。
用户代理 HTTP 协议中的用户代理字段。
Cookie HTTP 协议的 Cookie 字段。
引用站点 HTTP 协议的引用站点字段。

表 7. W3C 扩展日志文件格式(允许日志字段)

创建自定义日志格式

您可以手动或使用 NSWL 库自定义日志文件数据的显示格式。通过使用自定义日志格式,您可以派生 Apache 当前支持的大多数日志格式。

使用 NSWL 库创建自定义日志格式

根据 Windows 或 Solaris 主机计算机上是否安装了 NSWL 可执行文件,请使用以下 NSWL 库之一:

  • Windows: 位于系统管理器主机上 nsbin 目录中的 nswl.lib 库。
  • Solaris: libnswl.a 库位于 /usr/local/netscaler/bin 文件夹中。

使用 NSWL 库创建自定义日志格式

  1. 在 C 源文件中添加系统定义的以下两个 C 函数:

    ns_userDefFieldName():此函数返回必须作为自定义字段名添加到日志记录中的字符串。

    ns_userDefFieldVal():此函数实现自定义字段值,然后将其作为必须在日志记录末尾添加的字符串返回。

  2. 将文件编译为目标文件。

  3. 将目标文件与 NSWL 库(可选,与第三方库)链接,以形成新的 NSWL 可执行文件。

  4. 在配置文件 (log.conf) 中的日志格式字符串末尾添加 %d 个字符串。

示例

########## # A new file is created every midnight or on reaching 20MB file size, # and the file name is /datadisk5/netscaler/log/NS<hostname>/Nsmmddyy.log and create digital #signature field for each record. BEGIN CACHE_F logFormat custom "%a - "%{user-agent}i" [%d/%B/%Y %T -%g] "%x" %s %b%{referrer}i "%{user-agent}i" "%{cookie}i" %d " logInterval Daily logFileSizeLimit 20 logFilenameFormat /datadisk5/netscaler/log/%v/NS%`{`%m%d%y}t.log END CACHE_F

手动创建自定义日志格式

要自定义日志文件数据显示的格式,请指定一个字符串作为 LogFormat 日志属性定义的参数。以下是使用字符串创建日志格式的示例:

LogFormat Custom ""%a - "%{user-agent}i" %[%d/%m/%Y]t %U %s %b %T"
  • 字符串可以包含“c”类型控制字符 n 和 t 来表示新的行和制表符。
  • 使用带有文字引号和反斜杠的 Esc 键。

请求的特性通过在格式字符串中放置% 指令来记录,这些指令在日志文件中被值替换。

如果日志文件名格式字符串中存在 %v(主机名)或 %x(URL 后缀)格式说明符,则文件名中的以下字符将替换为日志配置文件名中的下划线符号:

” * . / : < > ? \

ASCII 值在 0-31 范围内的字符将被以下内容替换:

%<ASCII value of character in hexadecimal>

例如,具有 ASCII 值 22 的字符被 %16 替换。

注意

如果 %v 格式说明符存在于日志文件名格式字符串中,则会为每个虚拟主机打开一个单独的文件。为了确保连续日志记录,进程可以打开的最大文件数应足够大。有关更改可打开的文件数的过程,请参阅操作系统文档。

创建 Apache 日志格式

您可以从自定义日志派生 Apache 当前支持的大多数日志格式。与 Apache 日志格式匹配的自定义日志格式有:

NCSA/combined: LogFormat custom %h %l %u [%t] “%r” %s %B “%{referer}i” “%{user-agent}i”

NCSA/Common: LogFormat custom %h %l %u [%t] “%r” %s %B

Referer Log: LogFormat custom “%{referer}i” -> %U

Useragent: LogFormat custom %{user-agent}i

同样,您可以从自定义格式派生其他服务器日志格式。

定义自定义日志格式的参数

有关定义自定义日志格式的详细信息,请参阅自定义日志格式pdf 表格。

注意

有关如何导出自定义 HTTP 标头的说明,请参阅 为 Web 服务器日志记录配置 Citrix ADC

例如,如果将日志格式定义为 %+ {useragent} i,并且如果用户代理值是 Citrix ADC 系统 Web 客户端,则将信息记录为 Citrix ADC 系统 + Web + 客户端。另一种方法是使用双引号。例如,“% {useragent} i”将其记录为“Citrix ADC 系统 Web 客户端”。不 <Esc> 要在字符串上使用 %.. .r、%. . .i 和 %. . .o。这符合通用日志格式的要求。请注意,客户端可以将控制字符插入到日志中。因此,使用原始日志文件时应小心。

时间格式定义

请参阅 时间格式定义 表以了解自定义日志格式表中描述的% {format} t 字符串的格式部分。括号 ([ ]) 中的值显示出现的值范围。例如,下表中的 %d 描述中的 [1,31] 显示 %d 范围从 1 到 31。

注意

如果您指定的转换与上表中描述的任何转换或下一段中列出的任何修改的转换规范不对应,则行为未定义并返回 0。

%u 与 %W 之间的差异(以及修改后的转换率 %OU 与 %ow 之间的差异)的日期被认为是星期一。第 1 周是 1 月份的第一周(从 %U 的星期日开始,或 %W 的星期一开始)。周数 0 包含 %u 和 %W 的第一个星期日或星期一的前几天。

显示服务器日志

可以将 Citrix ADC Web 日志记录 (NSWL) 功能配置为在控制台上显示服务器日志,或将服务器日志重定向到 Citrix ADC 设备上的目录。

在控制台上显示日志的方法有两种(标准输出): 选项 1:显示控制台上的所有日志。 选项 2:仅在控制台上显示选定的日志,其中使用 logfilenameformat 作为 STDOOT 筛选器。