Also heed the security warning in the FAQ item I linked above, and circumvent the security issue with a custom appender like (the untested):
package Log::Log4perl::Appender::HJOfilnamed;
use parent qw[ Log::Log4perl::Appender::File ];
use POSIX();
sub new {
my $class = shift;
my %opts = @_;
my $tim = POSIX::strftime('%Y-%m-%dT%H-%M-%SZ', gmtime);
my $fname = join '.', grep defined, $opts{name}, $opts{appender},
+$tim, 'log';
$fname =~ s{::}{.}g;
$fname =~ s{[^0-9a-zA-Z\-\+\.}{}g;
$fname = $1 if $fname =~ /^(.*)$/
return $class->new( @_, filename => $fname );
}
So log4perl.appender.myFILE = Log::Log4perl::Appender::HJOfilnamed gets you a MyApp.myFILE.2012-10-29T02-40-04Z.log
You'd probably want to set other defaults to your liking :)( layout, mode, ... ) | [reply] [Watch: Dir/Any] [d/l] [select] |
package Log::Log4perl::Appender::HJOfilnamed;
use parent qw[ Log::Log4perl::Appender::File ];
Are you creating and entire module juste for the purpose of logging ? I mean, that's a good idea, I must admit it never accured to me that I could do so... And the use parent, what is it doing precisely please ?
If I understand quite well, you are creating an object to create a new name at every launch of the main script ? And you are calling it at the intialization of the logger ? Does this allows me to have the exact same logfile name for my script and its module ? (I mean, even if there's a delay of about a second between the two initializatons)
And thanks for the way you are naming your file, basically I use the same, but I'll stick to my method, it seems rather complicated the way you do it, at least to complicate for me... | [reply] [Watch: Dir/Any] [d/l] [select] |
And the use parent, what is it doing precisely please ? If you're really interested, read about it :) perldoc parent
output
testcase (creates 3 logfiles on each run)
| [reply] [Watch: Dir/Any] [d/l] [select] |