As a quick workaround, if your read-only filesystem (and your OS too!) supports linking you could make 'logs' point to the directory you really want to use for logs. 99% of chances that you had a good reason not to do that, but sometimes it's difficult to see the wood if one is concentrating on the trees.

Personally, I would rewrite your sub as follows:
sub logdir {
    my $altpath = setting('log_path');
    return $altpath if $altpath;

    my $appdir = setting('appdir');
    my $logroot = $appdir || File::Spec->tmpdir();
    return path($logroot, 'logs');
}
I see no reason to possibly create a temporary directory if you don't really need to.

Cheers,

   Flavio.


On Wed, Oct 27, 2010 at 8:11 PM, Mike Schroeder <mike@donor.com> wrote:
Currently the logdir() method in Dancer::Logger::File looks like:
sub logdir {
    my $appdir = setting('appdir');
    my $logroot = $appdir || File::Spec->tmpdir();
    return path($logroot, 'logs');
}

However, our production environments all mount off read-only filesystems, so having logging dependant on appdir won't work. I can write a new logger module that does something like:

sub logdir {
    my $appdir = setting('appdir');
    my $altpath = setting('log_path');
    my $logroot = $appdir || File::Spec->tmpdir();
    return ( $altpath ? $altpath : path($logroot, 'logs') );
}

Is that something that is worth going into the core?  I'm fine either way, but I thought this might be useful to others in the future.

Thanks.

Mike.



_______________________________________________
Dancer-users mailing list
Dancer-users@perldancer.org
http://www.backup-manager.org/cgi-bin/listinfo/dancer-users