運行時配置

這些函數(shù)的行為受 php.ini 中的設置影響。

Seaslog 配置選項
名字 默認 可修改范圍 更新日志
seaslog.appender 1 PHP_INI_SYSTEM
seaslog.appender_retry 0 PHP_INI_ALL
seaslog.level 8 PHP_INI_ALL
seaslog.remote_host 127.0.0.1 PHP_INI_ALL
seaslog.remote_port 514 PHP_INI_ALL
seaslog.remote_timeout 1 PHP_INI_SYSTEM
seaslog.default_basepath /var/log/www PHP_INI_SYSTEM
seaslog.default_logger default PHP_INI_SYSTEM
seaslog.default_template %T | %L | %P | %Q | %t | %M PHP_INI_SYSTEM
seaslog.default_datetime_format Y-m-d H:i:s PHP_INI_SYSTEM
seaslog.trace_error 1 PHP_INI_ALL
seaslog.trace_exception 0 PHP_INI_SYSTEM
seaslog.trace_notice 0 PHP_INI_ALL
seaslog.trace_warning 0 PHP_INI_ALL
seaslog.use_buffer 0 PHP_INI_SYSTEM
seaslog.buffer_size 0 PHP_INI_ALL
seaslog.buffer_disabled_in_cli 0 PHP_INI_SYSTEM
seaslog.disting_type 0 PHP_INI_SYSTEM
seaslog.disting_folder 1 PHP_INI_SYSTEM
seaslog.disting_by_hour 0 PHP_INI_SYSTEM
seaslog.recall_depth 0 PHP_INI_ALL
seaslog.trim_wrap 0 PHP_INI_ALL
seaslog.ignore_warning 1 PHP_INI_ALL
seaslog.throw_exception 1 PHP_INI_ALL

這是配置指令的簡短說明。

seaslog.appender integer

日志存儲介質的切換選型。1File 2TCP 3UDP (默認為1)

seaslog.appender 被切換至 `2 (TCP)` 或者 `3 (UDP)` 時, SeasLog 會將日志發(fā)送至 tcp://remote_host:remote_port 或者 udp://remote_host:remote_port 服務器。

SeasLog 將日志發(fā)往 TCP/UDP 時,格式遵守 RFC5424 規(guī)范。 此時 `{logInfo}` 受配置項中 seaslog.default_template 的影響。

The log style finally formatted such as:
<15>1 2017-08-27T01:24:59+08:00 vagrant-ubuntu-trusty test/logger[27171]: 2016-06-25 00:59:43 | DEBUG | 21423 | 599157af4e937 | 1466787583.322 | this is a neeke debug
<14>1 2017-08-27T01:24:59+08:00 vagrant-ubuntu-trusty test/logger[27171]: 2016-06-25 00:59:43 | INFO | 21423 | 599157af4e937 | 1466787583.323 | this is a info log
<13>1 2017-08-27T01:24:59+08:00 vagrant-ubuntu-trusty test/logger[27171]: 2016-06-25 00:59:43 | NOTICE | 21423 | 599157af4e937 | 1466787583.324 | this is a notice log
    
seaslog.appender_retry integer

記錄日志時的重試次數(shù)。 默認為 0 (不重試)

seaslog.buffer_disabled_in_cli integer

在 CLI 模式下是否關閉 Buffer 的選項。 1-Y 0-N(默認值)

在配置中留有 buffer_disabled_in_cli 的開關項。 默認情況下,這個選項是關閉的。 如果將 buffer_disabled_in_cli 設為開啟,并且運行在 CLI 時, 配置中的 seaslog.use_buffer 設置將是被忽略的,此時 Seaslog 將立即把日志信息寫往存儲介質。

seaslog.buffer_size integer

可以通過該配置項將內(nèi)存中 Buffer 的條數(shù)修改為 100 條。 配置項中 buffer_size 默認值為 0, 這意味著將不使用 Buffer。 如果 buffer_size > 0,SeasLog 將預先將日志寫入內(nèi)存 Buffer,并在 Buffer 的條數(shù)大于或等于該值時,寫往存儲介質,然后刷新內(nèi)存中的 Buffer。

seaslog.default_basepath string

日志存儲的默認根路徑。默認值為 "/var/log/www"。

seaslog.default_datetime_format string

時間的格式。默認值為 "Y-m-d H:i:s"。

seaslog.default_logger string

日志記錄的默認 Logger。默認值為 "default"。

seaslog.disting_by_hour integer

是否按每小時一個記錄進行區(qū)分。1-Y 0-N(默認值)

注意:

seaslog.disting_by_hour = 1 時,會將日志區(qū)分小時記錄。 這意味著,SeasLog 將每隔一個小時創(chuàng)建一個文件。

seaslog.disting_folder integer

是否按目錄進行區(qū)分。1-Y(默認值) 0-N

注意:

seaslog.disting_folder = 1 時,按目錄區(qū)分地使用 Logger。 這意味著,SeasLog 將為每一個 Logger 創(chuàng)建一個單獨的目錄進行區(qū)分,比如 default/20180211.log, 而當該選項關閉時,SeasLog 將使用下劃線連接 Logger 與時間,比如 default_20180211.log。

seaslog.disting_type integer

是否按日志級別進行區(qū)分。1-Y 0-N(默認值)

注意:

seaslog.disting_type = 1 時,按日志級別使用 Logger。 這意味著,SeasLog 將在創(chuàng)建日志文件時,使用 info/warn/error 或其他級別進行區(qū)分。

seaslog.ignore_warning integer

是否忽略 SeasLog 警告。1-On(默認值) 0-Off

注意:

seaslog.ignore_warning = 1 時,忽略 SeasLog 自身的警告, 此時日志目錄權限不足、或從遠端 Server 端口不能正常響應等導致的警告,將被忽略; 而當關閉該選項時,警告將會出現(xiàn)。

seaslog.level integer

允許日志被記錄的級別。默認為 8 (全部日志)。 0-EMERGENCY 1-ALERT 2-CRITICAL 3-ERROR 4-WARNING 5-NOTICE 6-INFO 7-DEBUG 8-ALL

注意:

提示: 該配置項從 1.7.0 版本開始有所改變。 在 1.7.0 之前的版本中,越小的值將代表越多的級別日志被記錄下來: 0-all 1-debug 2-info 3-notice 4-warning 5-error 6-critical 7-alert 8-emergency 在 1.7.0 之前的版本中,默認值是 0 (全部日志)。

seaslog.recall_depth integer

日志函數(shù)所在的層級。這將影響預置變量中的行號取值 `%F`。 默認值為 0。

seaslog.remote_host string

如果要使用 TCP 或者 UDP 為存儲介質,需要配置遠端的 IP。默認值為 "127.0.0.1"

seaslog.remote_port integer

如果要使用 TCP 或者 UDP 為存儲介質,需要配置遠端服務的端口號。默認值為 514

seaslog.remote_timeout integer

如果要使用 TCP 或者 UDP 為存儲介質,需要配置超時時間。默認值為 1 秒。

seaslog.throw_exception integer

是否接受 SeasLog 拋出異常。1-On(默認值) 0-Off

注意:

seaslog.throw_exception = 1時,接受 SeasLog 拋出自身的異常, 此時由于日志目錄權限問題、或者從遠端 Server 端口不能正常響應而導致的中斷, 將拋出一個異常;而當關閉該選項時,將不拋出異常。

seaslog.trace_error integer

自動將 PHP 的 Final Error 記錄在默認 Logger中。1-Y(默認值) 0-N

seaslog.trace_exception integer

自動將 PHP 的異常記錄在默認 Logger中。1-Y 0-N(默認值)

seaslog.trace_notice integer

自動將 PHP 的 Notice 記錄在默認 Logger中。1-Y 0-N(默認值)

seaslog.trace_warning integer

自動將 PHP 的 Warning 記錄在默認 Logger中。1-Y 0-N(默認值)

seaslog.trim_wrap integer

自動地 Trim 掉日志信息中的 \n 和 \r。1-On 0-Off(默認值)

seaslog.use_buffer integer

開啟使用內(nèi)存中的日志 Buffer。1-Y 0-N(默認值)

注意:

seaslog.use_buffer = 1時,開啟使用內(nèi)存 Buffer。 默認情況下,內(nèi)存 Buffer 是關閉的。 如果 Buffer 是開啟狀態(tài),SeasLog 會將日志預先記錄在內(nèi)存中, 并且在請求結束時、或 PHP 進程結束時(PHP RSHUTGOWN 或 PHP MSHUTDOWN)時寫往存儲介質。

seaslog.default_template string

默認日志模板。 默認值是 "%T | %L | %P | %Q | %t | %M".

注意:

SeasLog 提供了一系列的默認變量,可以在日志模板中使用,并在最終日志生成時,這些變量的占位符會被替換成對應的值。

默認的日志模板是:`seaslog.default_template = "%T | %L | %P | %Q | %t | %M"`, 這意味著,默認的日志格式會是:`{dateTime} | {level} | {pid} | {uniqid} | {timeStamp} | {logInfo}`

如果修改了日志模板,比如:`seaslog.default_template = "[%T]:%L %P %Q %t %M" `, 這意味著,日志的格式將會成改變?yōu)椋篳[{dateTime}]:{level} {pid} {uniqid} {timeStamp} {logInfo}`

Seaslog 內(nèi)置變量表
變量名 描述
%L 日志級別。
%M 日志信息。
%T 時間。 比如:`2017-08-16 19:15:02`,受配置項 `seaslog.default_datetime_format` 的影響。
%t 時間戳。比如:`1502882102.862`,精確到毫秒。
%Q 請求ID。用于區(qū)分每一個請求, 如果沒有調用 `SeasLog::setRequestId($string)` 函數(shù), 將在請求初始化的時候,使用 PHP 內(nèi)置函數(shù) `static char *get_uniqid ()` 來生成 Unique ID。
%H 主機名。
%P 進程ID。
%D 域名:端口號。比如:`www.cloudwise.com:80`;在 CLI 下運行時,該值為 `cli`。
%R 請求 URI。比如:`/app/user/signin`。 在 CLI 下運行時,值為 Index Script 名稱,比如:`CliIndex.php`。
%m 請求 Method。比如:`Get`。 在 CLI 下運行時,值為 Command Script,比如:`/bin/bash`。
%I 客戶端IP;在 CLI 下運行時,值為`local`。 取值優(yōu)先級為:HTTP_X_REAL_IP > HTTP_X_FORWARDED_FOR > REMOTE_ADDR
%F 文件名:行號。比如:`UserService.php:118`。
%U 內(nèi)存使用量。單位為 byte。 調用 PHP 內(nèi)置方法`zend_memory_usage`得到該值。
%u 最大內(nèi)存使用峰值。單位為 byte。 調用 PHP 內(nèi)置方法`zend_memory_peak_usage`得到該值。
%C `TODO` Class::Action. Such as `UserService::getUserInfo`