2014-10-21 3 views
5

Permetto agli utenti di caricare file sul mio sito. E alcuni di questi file possono essere molto grandi e mangia un enorme pezzo dei miei file di registro. Quindi mi piacerebbe non farlo apparire. So di:Filtra i parametri di registro lunghi in Rails

config.filter_parameters += [:password] 

Per filtrare determinati parametri. Ma il problema con questo è che il parametro è in un hash come questo:

{ 
    :person => { 
     :name => 'bob', 
     :file => { 
     :data => 'really long data. this can be tens of thousands of characters long' 
     } 
    } 
} 

Potrei aggiungere: dati alle filter_parameters ma che sarebbe nascosto un sacco di tronchi in tutto il tutto il sito in quanto i dati è una chiave comune (Non posso anche rinominarlo in qualcosa di più oscuro). È possibile che filter_parameters utilizzi un parametro nidificato? O c'è un altro modo per limitare la lunghezza di tutti i parametri, quindi se arrivano più grandi di una certa dimensione, non verrebbero archiviati nei miei file di registro.

+0

Perché caricare un file di grandi dimensioni richiede molto log? Dovrebbe essere una singola voce che dice che è stato caricato. –

+0

Credo che avrei dovuto formulare questo meglio. Non viene dal mio sito web. Un altro sito web lo sta pubblicando attraverso un percorso sul mio sito. Arriva con molti altri attributi e un file è una delle tante cose che mi sta mandando. – Dragonfly

+0

Probabilmente sarebbe di grande aiuto se mostrassi un esempio minimale del file in modo che possiamo vederlo, non tentare di immaginarlo. –

risposta

5

ho finito per mettere qualcosa di simile nella mia application.rb

config.filter_parameters << lambda do |k, v| 
    if k == 'data' && v && v.class == String && v.length > 1024 
    v.replace('[FILTER]') 
    end 
end 

non riuscivo a trovare un modo migliore per fare questo. Quindi cerco la chiave "data" nei parametri. E se il valore di quei dati è una stringa e supera una certa lunghezza, la sostituisco solo in modo che i registri non siano così disordinati.