I really don't have any experience using these modules, but I took a quick look at the documentation for Log::Dispatch::Screen. The screen output seems to default to writing to STDERR. If your Test::Trap code is checking STDOUT, then perhaps that's why you are not getting any output. However, I'm not sure why you would notice this problem only when running under cron.