Mojo::Log

Mojo::Log模塊是Mojo項目的簡單日志記錄器。并且它是Mojo::EventEmitter的一個子類。

語法概要

use Mojo::Log 

# Log to STDERR
my $log = Mojo::Log->new;


# Customize log file location and minimum log level
my $log = Mojo::Log->new( path => '/var/log/mojo.log', level => 'warn');

# Log messages
$log->debug('Not sure what is happening here');
$log->info('FYI: it happened again');
$log->warn('This might be a problem');
$log->error('Garden variety error');
$log->fatal('Boom');

事件

Mojo::Log從Mojo::EventEmitter中繼承了所有的事件,并實現了一個新的事件message。

$log->on(message => sub {
  my ($log, $level, @lines) = @_;
  ...
});

當有一個新的日志到達時會觸發這個事件。

屬性

Mojo::Log 擁有以下屬性:format、handle、history、level、max_history_size、path、short。下面分別進行介紹。

format

my $cb = $log->format;
$log   = $log->format(sub {...});

用于對日志信息進行格式化的回調函數。

$log->format(sub {
  my ($time, $level, @lines) = @_;
  return "[Thu May 15 17:47:04 2014] [info] I ? Mojolicious\n";
});

handle

my $handle = $log->handle;
$log       = $log->handle(IO::Handle->new);

為默認的“message”事件寫日志提供的寫日志信息的文件句柄,默認情況下使用“path”屬性或STDERR。

history

my $history = $log->history;
$log        = $log->history([[time, 'debug', 'That went wrong']]);

最新的N條日志記錄。

level

my $level = $log->level;
$log      = $log->level('debug');

日志級別,默認為debug,可用的日志級別有:debug、info、warn、error、fatal;請注意MOJO_LOG_LEVEL環境變量可以覆蓋默認的日志級別。

max_history_size

my $size = $log->max_history_size;
$log     = $log->max_history_size(5);

在“history”屬性中記錄的最大日志數據。

path

my $path = $log->path
$log     = $log->path('/var/log/mojo.log');

日志文件的路徑,被“handle”屬性使用得到日志文件的句柄。

short

my $bool = $log->short;
$log     = $log->short($bool);

生成沒有時間戳的短日志信息,適用于systemd,默認值為環境變量MOJO_LOG_SHORT的值。

方法

Mojo::Log繼承了Mojo::EventEmitter中的所有方法,并實現了以下方法。

append

$log->append("[Thu May 15 17:47:04 2014] [info] I ? Mojolicious\n");

添加日志信息到“handle”屬性中。

debug

$log = $log->debug('You screwed up, but that is ok');
$log = $log->debug('All', 'cool');

觸發“message”事件,并且記錄“debug”級別的日志。

error

觸發“message”事件,并且記錄“error”級別的日志。

error

$log = $log->error('You really screwed up this time');
$log = $log->error('Wow', 'seriously');

觸發“message”事件,并且記錄“debug”級別的日志。

fatal

$log = $log->fatal('Its over...');
$log = $log->fatal('Bye', 'bye');

觸發“message”事件,并且記錄“fatal”級別的日志。

info

$log = $log->info('You are bad, but you prolly know already');
$log = $log->info('Ok', 'then');

觸發“message”事件,并且記錄“info”級別的日志。

is_level

my $bool = $log->is_level('debug');

檢查日志的級別。

# True
$log->level('debug')->is_level('debug');
$log->level('debug')->is_level('info');

# False
$log->level('info')->is_level('debug');
$log->level('fatal')->is_level('warn');

當參數中的日志級別大于等于當前Mojo::Log對象的日志級別時返回true,否則返回false。

new

my $log = Mojo::Log->new;

構造一個新的日志對象,并使用默認的日志記錄器事件"message"。

warn

$log = $log->warn('Dont do that Dave...');
$log = $log->warn('No', 'really');

觸發“message”事件,并且記錄“warn”級別的日志。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,923評論 18 139
  • https://nodejs.org/api/documentation.html 工具模塊 Assert 測試 ...
    KeKeMars閱讀 6,396評論 0 6
  • 在應用程序中添加日志記錄總的來說基于三個目的:監視代碼中變量的變化情況,周期性的記錄到文件中供其他應用進行統計分析...
    時待吾閱讀 5,025評論 0 6
  • 在應用程序中添加日志記錄總的來說基于三個目的:監視代碼中變量的變化情況,周期性的記錄到文件中供其他應用進行統計分析...
    時待吾閱讀 5,082評論 1 13
  • “看雪在手中融化城市變白,把愛裝進禮物等你來拆”去年的寒雪 下的很大很白 我一個人過 沒有人陪 很冷 出門穿的很少...
    毒嗜閱讀 268評論 0 1