我想使用Mojolicious的Mojo::Log
工具登录Mojolicious Web应用程序。但是,我不确定使用它的正确/正确方式。
documentation显示它直接从脚本中使用,但是无法说明它是线程安全的还是在控制器之间共享是安全的,或者每个控制器是否应实例化其自己的Mojo::Log
对象(以及在这种情况下,所有这些文件指向同一日志文件是否安全?)。
使用此记录器的正确方法是什么?
答案 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');