11
votes

Comment modifier le chemin de journal par défaut des rails 3.0?

Je dois modifier le chemin de journal par défaut de ma demande de chemin de fer en raison du processus de déploiement de logiciel interne de mon entreprise: Fondamentalement, mon application Rails se termine sur un emplacement en lecture seule et j'ai besoin des fichiers journaux écrites dans un répertoire "fait pour cela". .

avec Rails 2.x Nous ajoutions une magie noire dans notre script FCGI pour forcer cela lorsqu'il est déployé sur PROD. HÔTELS: P>

class Rails::Configuration
   def default_log_path
     File.join(ENV['SOME_ENVIRONMENT_VAR'], "var/output/logs/rails.log")
   end
 end


0 commentaires

3 Réponses :


9
votes

Vous avez juste besoin de définir votre enregistreur

config.logger = ActiveSupport::BufferedLogger.new(File.join(ENV['SOME_ENVIRONMENT_VAR'], "var/output/logs/rails.log"))


7 commentaires

En fait, les rails3 (au moins) ont un config.log_path que j'ai utilisé et fonctionné parfaitement. Mais je n'aurais pas trouvé sans votre solution (en fait très sensible) :)


comme tu veux. Vous pouvez également modifier votre enregistreur avec la configuration Config.Logger. Utilisez Syslogger par exemple. Mettez votre trouvé sur la réponse. C'est plus mieux.


En fait, existe-t-il une source d'informations canoniques sur ces propriétés de configuration? Je n'ai pas trouvé l'un jusqu'à présent ...


Je n'ai pas vraiment trouvé aussi. Mais je pense que vous pouvez demander si question :)


config.log_path ne fait rien du tout pour moi dans les rails 3.1. config.logger fait cependant.


Selon la documentation officielle des rails ( Guides.RubyonRails.org/.../a>) C'est la bonne façon de le faire.


Dans Rails 4, ceci devrait être config.logger = ActiveSupport :: Logger.New (fichier.join (env ['), "var / sorties / journaux / rails.log")) (Il semble que Bufferedlogger ait été supprimé).



9
votes

Le paramètre config.log_path a été obsolète - la solution recommandée est maintenant:

config.paths.log = "/ Part / chemin / # {rails.env} .log"


2 commentaires

Cette syntaxe n'apparaît pas correctement. Dans le bloc de configuration, si vous faites un config.paths ['logfile'] = '...' qui semble juste mais la logTailleuse se plaint toujours.


Pour moi, config.paths ['log'] Comme suggéré par @aceofspades (ci-dessous, pas logfile ) a fonctionné bien.



6
votes

AS des rails 3.2.3, on dirait que le journal du journal est également défini dans Rails :: rack :: logTailer # initialiser code>, et qui vient de rails :: serveur # log_path.

LOG_PATH = "log/mylog.log"

require 'rails/commands/server'
module Rails
  class Server
    def log_path
      LOG_PATH
    end
  end
end

class Application < Rails::Application
  ...
  config.paths['log'] = LOG_PATH
  ...
end


0 commentaires