mirror of
https://github.com/percona/percona-toolkit.git
synced 2025-09-11 13:40:07 +00:00
Implement Percona::Agent::Logger without logging via API yet.
This commit is contained in:
600
bin/pt-agent
600
bin/pt-agent
File diff suppressed because it is too large
Load Diff
@@ -25,6 +25,7 @@ use English qw(-no_match_vars);
|
|||||||
|
|
||||||
use constant PTDEBUG => $ENV{PTDEBUG} || 0;
|
use constant PTDEBUG => $ENV{PTDEBUG} || 0;
|
||||||
|
|
||||||
|
use JSON;
|
||||||
use threads;
|
use threads;
|
||||||
use Thread::Queue;
|
use Thread::Queue;
|
||||||
|
|
||||||
@@ -77,12 +78,26 @@ sub BUILD {
|
|||||||
$self->_message_queue(Thread::Queue->new());
|
$self->_message_queue(Thread::Queue->new());
|
||||||
$self->_thread(
|
$self->_thread(
|
||||||
threads::async {
|
threads::async {
|
||||||
# $event = [ level, "message" ]
|
EVENT:
|
||||||
while ( my $event = $self->_message_queue->dequeue() ) {
|
while ( my $event = $self->_message_queue->dequeue() ) {
|
||||||
last unless defined $event;
|
last unless defined $event;
|
||||||
# TODO: POST @$event
|
# $event = [ level, "message" ]
|
||||||
}
|
my $status = {
|
||||||
|
log_level => $event->[0],
|
||||||
|
message => $event->[1],
|
||||||
|
};
|
||||||
|
eval {
|
||||||
|
$self->client->post(
|
||||||
|
link => $self->status_link,
|
||||||
|
resources => encode_json($status),
|
||||||
|
);
|
||||||
|
};
|
||||||
|
if ( my $e = $EVAL_ERROR ) {
|
||||||
|
warn "$e";
|
||||||
|
# TODO: a queue for failed messages?
|
||||||
}
|
}
|
||||||
|
} # EVENT
|
||||||
|
} # threads::async
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -129,8 +144,8 @@ sub error {
|
|||||||
sub fatal {
|
sub fatal {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
$self->_set_exit_status();
|
$self->_set_exit_status();
|
||||||
return unless $self->level >= 5;
|
$self->_log('FATAL', @_);
|
||||||
return $self->_log('FATAL', @_);
|
exit $self->exit_status;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub _set_exit_status {
|
sub _set_exit_status {
|
||||||
|
Reference in New Issue
Block a user