How can I access CakePHP log files on Heroku?

后端 未结 3 1158
挽巷
挽巷 2021-01-14 18:14

I\'ve deployed a CakePHP application to Heroku. CakePHP writes its logs in APP_ROOT/app/tmp/logs/error.log and APP_ROOT/app/tmp/logs/debug.log by d

相关标签:
3条回答
  • 2021-01-14 18:37

    In the latest versions of CakePHP (>= 3.6.0), the config/app.php file comes pre-configured to use an environment variable override for the stock debug and error logs. These vars should contain a DSN-style string defining the same attributes you would normally place in your config/app.php file.

    In the Heroku dashboard under Settings (or via the heroku cli tool), you can add the following ENV vars:

    LOG_DEBUG_URL = file:///?className=Cake%5CLog%5CEngine%5CConsoleLog&levels[]=notice&levels[]=info&levels[]=debug
    LOG_ERROR_URL = file:///?className=Cake%5CLog%5CEngine%5CConsoleLog&levels[]=warning&levels[]=error&levels[]=critical&levels[]=alert&levels[]=emergency
    

    The above two lines replicate the stock CakePHP logging, but redirect all output to the console instead of files.

    0 讨论(0)
  • 2021-01-14 18:55

    I think the following might work. Make sure you're using CakePHP 2.3.9.

    App::uses('ConsoleOutput', 'Console');
    
    CakeLog::config('default', array(
        'engine' => 'ConsoleLog',
        'stream' => new ConsoleOutput('php://stdout')
    ));
    
    CakeLog::config('stdout', array(
        'engine' => 'ConsoleLog',
        'types' => array('notice', 'info'),
        'stream' => new ConsoleOutput('php://stdout')
    ));
    
    CakeLog::config('stderr', array(
        'engine' => 'ConsoleLog',
        'types' => array('emergency', 'alert', 'critical', 'error', 'warning', 'debug'),
        'stream' =>  new ConsoleOutput('php://stderr')
    ));
    
    
    CakeLog::config('debug', array(
        'engine' => 'ConsoleLog',
        'types' => array('notice', 'info', 'debug'),
        'format' => 'debug %s: %s',
        'stream' => new ConsoleOutput('php://stdout')
    ));
    
    CakeLog::config('error', array(
        'engine' => 'ConsoleLog',
        'types' => array('warning', 'error', 'critical', 'alert', 'emergency'),
        'format' => 'error %s: %s',
        'stream' =>  new ConsoleOutput('php://stderr')
    ));
    
    0 讨论(0)
  • 2021-01-14 19:04

    From the Heroku documentation: https://devcenter.heroku.com/articles/php-logging#cakephp

    In your application configuration, instruct CakePHP to use the ConsoleLog engine for your logger setups:

    CakeLog::config('default', array(
        'engine' => 'ConsoleLog',
    ));
    

    You can then use the regular logging methods.

    CakeLog::warning("Hello, this is a test message!");
    

    Refer to the Logging section of the CakePHP manual for more information.

    0 讨论(0)
提交回复
热议问题