Changeset 9638
- Timestamp:
- 04/17/08 22:56:54 (5 years ago)
- Location:
- lang/perl/Moxy/branches/CC/lib
- Files:
-
- 1 added
- 1 modified
-
Moxy.pm (modified) (4 diffs)
-
Moxy/Component/Logger.pm (added)
Legend:
- Unmodified
- Added
- Removed
-
lang/perl/Moxy/branches/CC/lib/Moxy.pm
r9634 r9638 12 12 use UNIVERSAL::require; 13 13 use Carp; 14 use Log::Dispatch;15 14 use Scalar::Util qw/blessed/; 16 my $TERM_ANSICOLOR_ENABLED = eval { use Term::ANSIColor; 1; };17 15 18 __PACKAGE__->load_components(qw/UAInfo /);16 __PACKAGE__->load_components(qw/UAInfo Logger/); 19 17 20 18 sub new { … … 23 21 my $self = bless { config => $config, }, $class; 24 22 25 $self->{logger} = Log::Dispatch->new;26 27 23 $self->load_plugins; 28 24 29 25 $self->_init_storage; 30 31 $self->_init_logger;32 26 33 27 if (not $self->is_loaded(qr{::Server})) { … … 68 62 my ($self, $plugin) = @_; 69 63 70 $self->log(debug => "load plugin: $plugin->{module}");71 72 64 my $module = "Moxy::Plugin::" . $plugin->{module}; 73 65 $module->require or die $@; … … 97 89 98 90 sub storage { shift->{storage} } 99 100 # -------------------------------------------------------------------------101 102 sub _init_logger {103 my ($self, ) = @_;104 105 for my $target (@{$self->config->{global}->{log}->{targets}}) {106 $target->{module}->use or die $@;107 $self->{logger}->add( $target->{module}->new( %{ $target->{conf} } ) );108 }109 }110 111 sub log {112 my ($self, $level, $msg, %opt) = @_;113 114 # hack to get the original caller as Plugin or Server115 my $caller = $opt{caller};116 unless ($caller) {117 my $i = 0;118 while (my $c = caller($i++)) {119 last if $c !~ /Plugin/;120 $caller = $c;121 }122 $caller ||= caller(0);123 }124 125 chomp($msg);126 if ( $self->config->{global}->{log}->{encoding} ) {127 $msg = Encode::decode_utf8($msg) unless utf8::is_utf8($msg);128 $msg = Encode::encode( $self->config->{global}->{log}->{encoding}, $msg );129 }130 131 $self->{logger}->log(level => $level, message => "$caller [$level] $msg\n");132 }133 91 134 92 # -------------------------------------------------------------------------
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)