Ignore:
Timestamp:
Jan 7, 2014, 6:02:20 PM (8 years ago)
Author:
Jason Gross <jgross@mit.edu>
Children:
bf61c61
Parents:
f511c1e
git-author:
Jason Gross <jgross@mit.edu> (07/12/11 16:19:57)
git-committer:
Jason Gross <jgross@mit.edu> (01/07/14 18:02:20)
Message:
Moved the checking of whether or not to log messages to perl
File:
1 edited

Legend:

Unmodified
Added
Removed
  • perl/lib/BarnOwl/Logging.pm

    rdca6255 r6e764aa  
    1515Modules wishing to customize how messages are logged should override the
    1616relevant subroutines in the appropriate subclass of L<BarnOwl::Message>.
     17
     18Modules wishing to log errors sending outgoing messages should call
     19L<BarnOwl::Logging::log_outgoing_error> with the message that failed
     20to be sent.
    1721
    1822=head2 EXPORTS
     
    7680}
    7781
    78 # For ease of use in C
    79 sub get_filenames_as_string {
    80     my @rtn;
    81     foreach my $filename (BarnOwl::Logging::get_filenames(@_)) {
    82         $filename =~ s/\n/_/g;
    83         push @rtn, $filename;
     82=head2 should_log_message MESSAGE
     83
     84Determines whether or not the passed message should be logged.
     85
     86To customize the behavior of this method, override
     87L<BarnOwl::Message::should_log>.
     88
     89=cut
     90
     91sub should_log_message {
     92    my ($m) = @_;
     93    # If there's a logfilter and this message matches it, log.
     94    # pass quiet=1, because we don't care if the filter doesn't exist
     95    return 1 if BarnOwl::message_matches_filter($m, BarnOwl::getvar('logfilter'), 1);
     96    # otherwise we do things based on the logging variables
     97    # skip login/logout messages if appropriate
     98    return 0 if $m->is_loginout && BarnOwl::getvar('loglogins') eq 'off';
     99    # check direction
     100    return 0 if $m->is_outgoing && BarnOwl::getvar('loggingdirection') eq 'in';
     101    return 0 if $m->is_incoming && BarnOwl::getvar('loggingdirection') eq 'out';
     102    return $m->should_log;
     103}
     104
     105=head2 log MESSAGE
     106
     107Call this method to (potentially) log a message.
     108
     109To customize the behavior of this method for your messages, override
     110L<BarnOwl::Message::log>, L<BarnOwl::Message::should_log>,
     111L<BarnOwl::Message::log_base_path>, and/or
     112L<BarnOwl::Message::log_filenames>.
     113
     114=cut
     115
     116sub log {
     117    my ($m) = @_;
     118    return unless BarnOwl::Logging::should_log_message($m);
     119    my $log_text = $m->log;
     120    foreach my $filename (BarnOwl::Logging::get_filenames($m)) {
     121        BarnOwl::Logging::enqueue_text($log_text, $filename);
    84122    }
    85     return join("\n", @rtn);
     123}
     124
     125=head2 log_outgoing_error MESSAGE
     126
     127Call this method to (potentially) log an error in sending an
     128outgoing message.  Errors get logged to the same file(s) as
     129successful messages.
     130
     131To customize the behavior of this method for your messages, override
     132L<BarnOwl::Message::log_outgoing_error>,
     133L<BarnOwl::Message::should_log>,
     134L<BarnOwl::Message::log_base_path>, and/or
     135L<BarnOwl::Message::log_filenames>.
     136
     137=cut
     138
     139sub log_outgoing_error {
     140    my ($m) = @_;
     141    return unless BarnOwl::Logging::should_log_message($m);
     142    my $log_text = $m->log_outgoing_error;
     143    foreach my $filename (BarnOwl::Logging::get_filenames($m)) {
     144        BarnOwl::Logging::enqueue_text($log_text, $filename);
     145    }
    86146}
    87147
Note: See TracChangeset for help on using the changeset viewer.