Question

Je reçois le message d'erreur suivant lors du redémarrage de mon application rails. J'ai déjà eu ce problème auparavant, sur un autre serveur avec une autre application, mais je ne me souviens pas de son problème ni de la façon dont je l'ai résolu.

Rails Error: Unable to access log file. Please ensure that /apps/staging/releases/20090310162127/log/staging.log exists and is chmod 0666. The log level has been raised to WARN and the output directed to STDERR until the problem is fixed.

Je déploie sur un cluster métis avec capistrano sur Ubuntu.

Quand je fais ls -l /apps/staging/releases/20090310162127/log/staging.log

le résultat est:

-rw-rw-rw- 1 me grp 51 Mar 10 16:07 /apps/staging/releases/20090310162127/log/staging.log

Le répertoire de journalisation est un lien vers / apps / staging / shared / log.

Qu'est-ce qui se passe?

Était-ce utile?

La solution

Il s’est avéré qu’il s’agissait d’un bogue de rails subtil:

Quand une exception est levée dans ces deux lignes

logger = ActiveSupport::BufferedLogger.new(configuration.log_path)
logger.level = ActiveSupport::BufferedLogger.const_get(configuration.log_level.to_s.upcase)

rails suppose qu'il ne peut pas trouver le fichier journal. Cependant, l'erreur réelle s'est produite dans la deuxième ligne: une erreur NameError car la constante est incorrecte. La raison en est qu'il y avait un niveau de journal hérité dans mon fichier de configuration:

config.log_level = Logger::INFO

Rails 2.2 utilise son propre enregistreur et ne comprend pas la ligne ci-dessus.

Solution: supprimez la ligne ou utilisez:

config.log_level = :info

Autres conseils

Rails est-il exécuté en tant que moi ? Si non, quel utilisateur est-il exécuté? Cet utilisateur jail est-il édité? L'utilisateur dispose-t-il d'autorisations transversales pour tous les composants de / apps / staging / shared / log ainsi que pour tous les composants de / apps / staging / releases / 20090310162127 / log ?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top