Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Re: combine logentries with Log::log4perl

by shadowsong (Pilgrim)
on Sep 03, 2015 at 10:22 UTC ( #1140868=note: print w/replies, xml ) Need Help??


in reply to combine logentries with Log::log4perl

Could you provide us with a bit more information?

simply combine multiple log entries into one, big chunk. it's ok that all messages share a timestamp, i don't need a line number or something. just log, what happens, not when and where.

Sounds like Log::Log4perl::Appender::Buffer ought to be able to accomplish that.. Perhaps you could post the code of your attempt to use it?

  • Comment on Re: combine logentries with Log::log4perl

Replies are listed 'Best First'.
Re^2: combine logentries with Log::log4perl
by Anonymous Monk on Sep 03, 2015 at 10:38 UTC
    sure, that's just a simplification but it shows
    the same strange symptoms:

    use Log::Log4perl qw(:easy); $conf = <<EOT; log4perl.rootLogger = DEBUG, Log1 log4perl.appender.Log1 = Log::Log4perl::Appender::File log4perl.appender.Log1.filename = /tmp/test.log log4perl.appender.Log1.mode = append log4perl.appender.Log1.layout = Log::Log4perl::Layout::SimpleLayout log4perl.appender.Log1.Threshold = INFO log4perl.logger = TRACE, Log2 log4perl.appender.Log2 = Log::Log4perl::Appender::ScreenColoredLevels log4perl.appender.Log2.layout = Log::Log4perl::Layout::PatternLayout log4perl.appender.Log2.layout.ConversionPattern = %m%n log4perl.category = DEBUG, Buffer log4perl.appender.Buffer = Log::Log4perl::Appender::Buffer log4perl.appender.Buffer.appender = Log1 log4perl.appender.Buffer.trigger_level = ERROR EOT Log::Log4perl->init(\$conf); TRACE("message #1 (screen only)"); INFO("message #2"); INFO("message #3"); sleep(10); ERROR("message #4");

    when i run this, i get on screen:

    message #2 message #3 message #4

    and in the file:

    INFO - message #2 INFO - message #3 INFO - message #2 INFO - message #3 ERROR - message #4 ERROR - message #4

    the first two lines of the log file appear at the same time like the ones on the screen. the first line (message #1) to the screen appender just disappears but in the log file message #2, #3 & #4 get doubled when the ERROR trigger got hit.

    very odd behaviour. didn't match my expectations.

    greetings

      You appear to be attempting to log to multiple places, hence all the double ups (and probably the cause of stuff not appearing on screen as expected). Try this:

      use strict; use warnings; use Log::Log4perl qw(:easy); my $conf = <<EOT; log4perl.rootLogger = DEBUG, Log1 log4perl.appender.Log1 = Log::Log4perl::Appender::File log4perl.appender.Log1.filename = /tmp/test.log log4perl.appender.Log1.mode = append log4perl.appender.Log1.layout = Log::Log4perl::Layout::SimpleLayout log4perl.appender.Log1.Threshold = INFO log4perl.logger = TRACE, Log2 log4perl.appender.Log2 = Log::Log4perl::Appender::ScreenColoredLevels log4perl.appender.Log2.layout = Log::Log4perl::Layout::PatternLayout log4perl.appender.Log2.layout.ConversionPattern = %m%n log4perl.category = TRACE, Buffer log4perl.appender.Buffer = Log::Log4perl::Appender::Buffer log4perl.appender.Buffer.appender = Log1 log4perl.appender.Buffer.trigger_level = ERROR EOT Log::Log4perl->init(\$conf); TRACE("message #1 (screen only)"); INFO("message #2"); INFO("message #3"); sleep(10); ERROR("message #4");

      EDIT: You've set the buffer to intercept all messages and only allow DEBUG and higher through. Thats why your onscreen TRACE message disappears. Still looking into the doubling up thing.

      Oh, and I've updated my source - This gets the screen to display correctly, but everything is still doubled in the file.

      Change this line

      log4perl.rootLogger = DEBUG, Log1

      To this:

      log4perl.rootLogger = DEBUG, Buffer

      And... you can remove this line if you'd like the TRACE category to show up on STDOUT

      log4perl.category = DEBUG, Buffer

      Let us know if that matches your expectations? Although deep down I think you'll find you may have to write a custom composite function if you'd like to get a deeper level of customization..

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1140868]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (4)
As of 2019-08-19 07:38 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    If you were the first to set foot on the Moon, what would be your epigram?






    Results (137 votes). Check out past polls.

    Notices?