Catalyst / Moose:使日志对象始终可用于外部模块

问题描述 投票:0回答:1

我有一个大型的Catalyst应用程序,它具有自己的日志记录系统(内置的Catalyst日志除外);设置例程使日志对象在存储区中可用为$c->stash->{log}。 (不同的控制器具有不同的日志对象,并且输出到达不同的位置。)

此应用程序具有大型实用程序包,具有许多通常用于处理各种任务的小功能(沿着get_name_from_idcleanse_inputconvert_date行)。该软件包仅专用于该Catalyst应用,即,任何外部应用都不共享。

有没有一种方法可以使日志对象可用于整个实用程序包,而不必每次都手动传递它?我认为有一些整洁的麋鹿可以做到这一点,但是我的麋鹿很穷。...

perl moose catalyst
1个回答
0
投票

不要将其放在藏匿处。拆分实用程序库。在需要共享功能的地方使用roles

package Loggable {
    use Moose::Role;
    sub log {
        ... # implementation goes here
    }
}

package SomeController {
    use Moose;
    with 'Loggable';

    ...
}

my $c = SomeController->new;
$c->can('log') # true
© www.soinside.com 2019 - 2024. All rights reserved.