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
3 Réponses :
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"))
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")) code> (Il semble que Bufferedlogger ait été supprimé).
Le paramètre config.log_path code> a été obsolète - la solution recommandée est maintenant: p>
config.paths.log = "/ Part / chemin / # {rails.env} .log" code> p> p>
Cette syntaxe n'apparaît pas correctement. Dans le bloc de configuration, si vous faites un config.paths ['logfile'] = '...' code> qui semble juste mais la logTailleuse se plaint toujours.
Pour moi, config.paths ['log'] code> Comme suggéré par @aceofspades (ci-dessous, pas
logfile code>) a fonctionné bien.
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