使用Mojo :: Log的正确方法是什么?

时间:2019-07-09 22:52:59

标签: perl mojolicious

我想使用Mojolicious的Mojo::Log工具登录Mojolicious Web应用程序。但是,我不确定使用它的正确/正确方式。

documentation显示它直接从脚本中使用,但是无法说明它是线程安全的还是在控制器之间共享是安全的,或者每个控制器是否应实例化其自己的Mojo::Log对象(以及在这种情况下,所有这些文件指向同一日志文件是否安全?)。

使用此记录器的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

一个Mojolicious应用程序具有一个Mojo :: Log对象,可通过log属性访问该对象,该对象用于记录日志。大多数控制器应该能够共享它,并且其行为将根据当前模式,日志级别的环境变量等进行设置。Mojolicious本身并不使用线程,而是IOLoop,它是协作式多任务处理,实际上没有任何运行在同一时间它使用flocked写操作,因此可以避免与其他执行相同操作的进程并发,例如在Hypnotoad之类的前叉服务器中,有多个工作人员写入同一日志。

# startup or plugin code
$app->log->debug('Debug message');

# controller or helper code
$c->app->log->info('Something happened');