2013-01-16 18 views
18

Ho una registrazione dell'applicazione django 1.4.2 che va a un file rotante. Nel mio settings.py ho:Registro di Django rotante e proprietà del file di registro

LOGGING = { 
'version': 1, 
'disable_existing_loggers': True, 
'formatters': { 
    'standard': { 
     'format': '%(asctime)s [%(levelname)s] %(name)s: %(message)s' 
    }, 
}, 
'handlers': { 
    'default': { 
     'level':'DEBUG', 
     'class':'logging.handlers.RotatingFileHandler', 
     'filename': '/var/www/html/logs/mylog.log', 
     'maxBytes': 1024*1024*5, # 5 MB 
     'backupCount': 5, 
     'formatter':'standard', 
    }, 
    'request_handler': { 
      'level':'DEBUG', 
      'class':'logging.handlers.RotatingFileHandler', 
      'filename': '/var/www/html/logs/django_request.log', 
      'maxBytes': 1024*1024*5, # 5 MB 
      'backupCount': 5, 
      'formatter':'standard', 
    }, 
}, 
'loggers': { 
    '': { 
     'handlers': ['default'], 
     'level': 'ERROR', 
     'propagate': True 
    }, 
    'django.request': { # Stop SQL debug from logging to main logger 
     'handlers': ['request_handler'], 
     'level': 'DEBUG', 
     'propagate': False 
    }, 
} 

}

Così nella directory di registrazione vedo i file:

mc.log 
mc.log.1 
mc.log.2 
mc.log.3 
mc.log.4 
mc.log.5 

Quando mc.log raggiungere 5M i file siano correttamente ruotati ma il nuovo mc.log viene creato con la proprietà root.root. Poiché apache è in esecuzione su utente apache, non può più accedere ai file e l'applicazione smette di funzionare. Qualche idea sul perché il nuovo log sia creato con proprietà root.root invece di apache.apache?

Grazie

+2

Anche io sto vedendo questo comportamento. L'hai mai capito? – fluffels

risposta

8

nuovi file possono essere creati se l'utente/gruppo di directory padre lo permette. Credo che sia necessario modificare il proprietario della directory o aggiungere un gruppo alla directory che include gli utenti di apache o utilizzare una tecnica avanzata come ACL.

Per provarlo, provare quanto segue: Accedi come utente root. Passa all'utente apache. Prova a creare un file manualmente. Torna alla root, modifica le autorizzazioni/proprietà della cartella, passa all'utente apache, riprova. Questo dovrebbe darti qualche informazione in più sul fatto che lo script fallirà nel tentativo di creare il file.

Infine, è un po 'controintuitivo, assicurarsi che l'utente apache abbia in qualche modo il permesso di esecuzione in quella directory, altrimenti non vi permetterà di effettuare il cd in tale directory.

Inoltre, penso che sarà necessario impostare il bit "s" della directory (chmod g+s o chmod 2755 ecc.) In modo che i file aggiunti di recente ereditino le autorizzazioni della directory. Quindi, è necessario assicurarsi che il bit del gruppo sia impostato e che il gruppo possegga la directory. (oppure è possibile impostare il gruppo della directory su www-data).

Problemi correlati