如何控制 Mojolicious Web 服务器的日志记录

How to control logging for Mojolicious web server

我想更改 Mojolicious 网络服务器的默认日志记录级别,但在阅读文档后我不知道该怎么做。我是一个相当新的 Perl 开发人员,因为我必须将 Perl 用于特定的遗留用例——我通常在日常工作中使用 Go、Python、Java。我想有一些“Perl 方式”可以做到这一点,但由于我缺乏经验,我无法理解。

这是一个简单的示例应用程序:

#!/usr/bin/env perl

use strict;
use warnings;
use utf8;

use Mojolicious::Lite -signatures;

get '/ping' => sub ($c) {
    $c->render( json => { 'pong' => $c->param('value'), 'number' => 1 } );
};

app->start( 'daemon', '-l', 'http://localhost:8888' );

我 运行 在一个终端中,然后,我从另一个终端到达端点并得到响应:

curl "http://localhost:8888/ping?value=test"
{"number":1,"pong":"test"}

但是,在 Web 服务器终端中,我得到了跟踪级别的日志记录,据我所知这是 Mojolicious 的默认日志记录级别:

[2022-01-21 14:38:04.40413] [1628] [info] Listening at "http://localhost:8888"
Web application available at http://localhost:8888
[2022-01-21 14:38:39.06480] [1628] [trace] [sLAkASlGAvjE] GET "/ping"
[2022-01-21 14:38:39.06516] [1628] [trace] [sLAkASlGAvjE] Routing to a callback
[2022-01-21 14:38:39.06552] [1628] [trace] [sLAkASlGAvjE] 200 OK (0.000718s, 1392.758/s)

我想将日志记录级别退回到 'info'。

您可以这样设置日志级别:

app->log->level('error');

这个例子来自主Mojolicious::Lite documentation in the app section。这是该文档中 grepping log 的唯一命中。

在您的示例中,您可以在应用程序开始或结束时执行此操作。

# ...
use Mojolicious::Lite -signatures;

app->log->level('info');

get '/ping' => sub ($c) {
    $c->render( json => { 'pong' => $c->param('value'), 'number' => 1 } );
};

app->start( 'daemon', '-l', 'http://localhost:8888' );