Logging via syslog and pipe is supported in tengine. To use it, you should enable the syslog module first:
./configure --with-syslog
The syslog module can talk directly to syslogd or syslog-ng.
og sampling is also possible in tengine to reduce the count of log records.
Directives
Syntax: access_log log_target [format [ratio=ratio] [buffer=size]] | off
Default: access_log logs/access.log combined ratio=1
Context: http, server, location
Basically, you can use it as same as nginx's 'access_log', and you can write down 'ratio' and 'buffer' after 'format' in any order.
Moreover, there are several enhancements:
log_target
It's compatible with the log_file parameter, while three new log media types are supported:
file:/path/to/file |
- 'file'
Disk file, which is the same as the nginx's. 'syslog'
Support logging via syslog (UDP).
facility := auth | authpriv | cron | daemon | ftp | kern | lpr | mail | mark |
Here are a few examples:
syslog:user:info:127.0.0.1:514:ident |
Log to 127.0.0.1:514, with facility 'user', level 'info' and ident 'ident'.
The output is something like this:
May 4 15:44:15 local ident[26490]: XXXXXXXX |
Log to 10.232.4.28:514, with facility 'auth', level 'err' and ident 'ident'.
syslog:user:info:/dev/log:ident |
Log to local Unix dgram(/dev/log), with facility 'user', level 'info' and ident 'ident'.
syslog:user::/dev/log:ident |
Log to local Unix dgram(/dev/log), with facility 'user', default level 'info' and ident 'ident'.
syslog:user:info::ident |
Log to default local Unix dgram(/dev/log), with facility 'user', level 'info' and ident 'ident'.
syslog:cron:debug:/dev/log |
Log to local Unix dgram(/dev/log), with facility 'cron', level 'debug' and default ident 'NGINX'.
The output is something like this:
May 4 15:44:15 local NGINX[26490]: XXXXXXXX |
Log to 127.0.0.1:514, with facility 'user', default level 'info' and default ident 'NGINX'.
syslog:user:debug |
Log to default local Unix dgram(/dev/log), with facility 'user', level 'debug' and default ident 'NGINX'.
syslog:user |
Log to default local Unix dgram(/dev/log), with facility 'user', default level 'info' and default ident 'NGINX'.
- 'pipe'
Since there may be space characters, the pipe name should be wrapped by quotes.
The privilege of the pipe is the same the worker process (default user and group are 'nobody').
ratio
Specify a sampling ratio.
For example, ratio=0.0001, which means tengine will log only once in every 10000 records.
This parameter must be explicitly specified, e.g. ratio=1, if you want to use the 'buffer' parameter.
Syntax: error_log log_target [debug | info | notice | warn | error | crit]
Default: error_log logs/error.log
Context: core, http, server, location
Syslog and pipe are also supported, which is similar to 'access_log'.
Syntax: syslog_retry_interval seconds
Default: syslog_retry_interval 1800
Context: core
The retry interval in case tengine fails to connect to the remote syslog server.
Syntax: log_escape on | off | ascii
Default: log_escape on
Context: core, http, server, location
- 'on': escape the special characters (exclude the reserved or unreserved characters) in your access log.
- 'off': don't escape the special characters.
- 'acsii': only escape the invisible characters in the ACSII table.