lib/Search/Elasticsearch/Logger/LogAny.pm (32 lines of code) (raw):

# Licensed to Elasticsearch B.V. under one or more contributor # license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright # ownership. Elasticsearch B.V. licenses this file to you under # the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. package Search::Elasticsearch::Logger::LogAny; use Moo; with 'Search::Elasticsearch::Role::Logger'; use Search::Elasticsearch::Util qw(parse_params to_list); use namespace::clean; use Log::Any 1.02 (); use Log::Any::Adapter(); #=================================== sub _build_log_handle { #=================================== my $self = shift; if ( my @args = to_list( $self->log_to ) ) { Log::Any::Adapter->set( { category => $self->log_as }, @args ); } Log::Any->get_logger( category => $self->log_as ); } #=================================== sub _build_trace_handle { #=================================== my $self = shift; if ( my @args = to_list( $self->trace_to ) ) { Log::Any::Adapter->set( { category => $self->trace_as }, @args ); } Log::Any->get_logger( category => $self->trace_as ); } #=================================== sub _build_deprecate_handle { #=================================== my $self = shift; if ( my @args = to_list( $self->deprecate_to ) ) { Log::Any::Adapter->set( { category => $self->deprecate_as }, @args ); } Log::Any->get_logger( default_adapter => 'Stderr', category => $self->deprecate_as ); } 1; # ABSTRACT: A Log::Any-based Logger implementation =head1 DESCRIPTION L<Search::Elasticsearch::Logger::LogAny> provides event logging and the tracing of request/response conversations with Elasticsearch nodes via the L<Log::Any> module. I<Logging> refers to log events, such as node failures, pings, sniffs, etc, and should be enabled for monitoring purposes. I<Tracing> refers to the actual HTTP requests and responses sent to Elasticsearch nodes. Tracing can be enabled for debugging purposes, or for generating a pretty-printed C<curl> script which can be used for reporting problems. I<Deprecations> refers to deprecation warnings returned by Elasticsearch 5.x and above. Deprecations are logged to STDERR by default. =head1 CONFIGURATION Logging and tracing can be enabled using L<Log::Any::Adapter>, or by passing options to L<Search::Elasticsearch/new()>. =head2 USING LOG::ANY::ADAPTER Send all logging and tracing to C<STDERR>: use Log::Any::Adapter qw(Stderr); use Search::Elasticsearch; my $e = Search::Elasticsearch->new; Send logging and deprecations to a file, and tracing to Stderr: use Log::Any::Adapter(); Log::Any::Adapter->set( { category => 'elasticsearch.event' }, 'File', '/path/to/file.log' ); Log::Any::Adapter->set( { category => 'elasticsearch.trace' }, 'Stderr' ); Log::Any::Adapter->set( { category => 'elasticsearch.deprecation' }, 'File', '/path/to/deprecations.log' ); use Search::Elasticsearch; my $e = Search::Elasticsearch->new; =head2 USING C<log_to>, C<trace_to> AND C<deprecate_to> Send all logging and tracing to C<STDERR>: use Search::Elasticsearch; my $e = Search::Elasticsearch->new( log_to => 'Stderr', trace_to => 'Stderr', deprecate_to => 'Stderr' # default ); Send logging and deprecations to a file, and tracing to Stderr: use Search::Elasticsearch; my $e = Search::Elasticsearch->new( log_to => ['File', '/path/to/file.log'], trace_to => 'Stderr', deprecate_to => ['File', '/path/to/deprecations.log'], ); See L<Log::Any::Adapter> for more.