# Analizzazione delle query eseguite

**URL:** <https://www.ruby-forum.com/t/analizzazione-delle-query-eseguite/171447>\
**Category:** IT\
**Created:** [July 2, 2009, 4:55pm UTC](https://www.ruby-forum.com/t/analizzazione-delle-query-eseguite/171447 "2009-07-02T16:55:49Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![dbozz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/85e7bf/32.png) [@dbozz](https://www.ruby-forum.com/u/dbozz)\
**Post date:** [July 2, 2009, 4:55pm UTC](https://www.ruby-forum.com/t/analizzazione-delle-query-eseguite/171447/1 "2009-07-02T16:55:49Z")

</div>

Tutte le query eseguite dalla applicazione rubyonrail vengono  
memorizzate nei rispettivi file log (development, production …)  
E’ possibile salvare tali dati su database, o meglio salvare le query  
eseguite da ogni azione? Esistono giÃ dei plugin in merito?

---

<div class="post-metadata">

**Author:** ![dbozz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/85e7bf/32.png) [@dbozz](https://www.ruby-forum.com/u/dbozz)\
**Post date:** [July 2, 2009, 5:31pm UTC](https://www.ruby-forum.com/t/analizzazione-delle-query-eseguite/171447/2 "2009-07-02T17:31:52Z")

</div>

mmh… immagino di si… prova a guardare se esiste gia un  
logger che lavora su database…

Alternativamente bisogna cercare chi logga quelle query (dove  
soprattutto) ed intercettarlo 😃

Sandro

2009/7/2 Dboz D. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![dbozz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/85e7bf/32.png) [@dbozz](https://www.ruby-forum.com/u/dbozz)\
**Post date:** [July 2, 2009, 5:40pm UTC](https://www.ruby-forum.com/t/analizzazione-delle-query-eseguite/171447/3 "2009-07-02T17:40:31Z")

</div>

Dboz D. wrote:

> Tutte le query eseguite dalla applicazione rubyonrail vengono  
> memorizzate nei rispettivi file log (development, production …)  
> E’ possibile salvare tali dati su database, o meglio salvare le query  
> eseguite da ogni azione? Esistono giÃ dei plugin in merito?

Googlando si trova qualcuno che ha rediretto tutto il log della sua  
macchina, Rails incluso, verso un db usando syslog-ng. Ci sono dei link  
a

> <https://stackoverflow.com/questions/1070613/error-logging-in-rails-using-mysql>

Dovresti perÃ² cambiare la configurazione (ti interessa solo Rails) e  
dovresti anche trovare il modo di mandare nel db solo le query. A questo  
punto ti consiglierei piuttosto di lasciar stare syslog-ng e mettere  
mano alle classi di logging di Rails. Guarda il codice del metodo

module ActiveSupport  
class BufferedLogger  
def add(severity, message = nil, progname = nil, &block)  
…  
end  
end  
end

nella lib della rispettiva gemma. Dovresti crearti un file nella lib  
della tua applicazione Rails che lo riscrive estraendo le query dal  
message e inviandolec al db. Ovviamente non devi loggare questi accessi  
al db, pena temo un loop infinito, per cui dovrai usare il metodo  
silence del BufferedLogger

[http://api.rubyonrails.org/classes/ActiveSupport/BufferedLogger.html#M001816](http://api.rubyonrails.org/classes/ActiveSupport/BufferedLogger.html#M001816)

Secondo me in una mezza giornata te la cavi.

Paolo

---

<div class="post-metadata">

**Author:** ![dbozz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/85e7bf/32.png) [@dbozz](https://www.ruby-forum.com/u/dbozz)\
**Post date:** [July 3, 2009, 9:34am UTC](https://www.ruby-forum.com/t/analizzazione-delle-query-eseguite/171447/4 "2009-07-03T09:34:23Z")

</div>

Grazie!!! Mi metto al lavoro  
Saluti  
DBOZ

---

<div class="post-metadata">

**Author:** ![dbozz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/85e7bf/32.png) [@dbozz](https://www.ruby-forum.com/u/dbozz)\
**Post date:** [July 3, 2009, 10:49am UTC](https://www.ruby-forum.com/t/analizzazione-delle-query-eseguite/171447/5 "2009-07-03T10:49:55Z")

</div>

2009/7/3 Dboz D. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> Grazie!!! Mi metto al lavoro

non è che poi pubblichi anche il risultato? potrebbe essere utile a tanti.

pietro

---

<div class="post-metadata">

**Author:** ![dbozz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/85e7bf/32.png) [@dbozz](https://www.ruby-forum.com/u/dbozz)\
**Post date:** [July 3, 2009, 11:05am UTC](https://www.ruby-forum.com/t/analizzazione-delle-query-eseguite/171447/6 "2009-07-03T11:05:13Z")

</div>

A quest link  
[http://blog.gugl.org/archives/47](http://blog.gugl.org/archives/47)  
spiega molto bene come sovrascrivere il metodo add della classe  
BufferedLogger e come configurarlo nell’enviroment.  
Questa Ã¨ la riga dove di modifica l’output che andrÃ nel file di log

message = “#{Time.now.to\_formatted\_s(:db)} #{SEVERITIES[severity]}  
#{message.strip}” +" the end \n"

L’informazione che a me interessa Ã¨ il tempo di esecuzione dell’azione  
eseguita dal controller per intercettare qualche anomalia o disfunzione  
nell’applicazione

Ho creato il metodo  
def add\_visit  
visit = Visit.new  
visit.ip = request.remote\_ip  
visit.url = request.request\_uri  
visit.user\_id = current\_user.id

```
visit.controller_name = request.path_parameters['controller']
visit.action_name = request.path_parameters['action']
visit.domain_name = request.domain
visit.subdomain_name = request.subdomains
visit.port_integer = request.port
visit.port_string = request.port_string
visit.protocol_name = request.protocol
visit.execution_time !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
visit.save

```

end

nella classe ApplicationController \< ActionController::Base che faccio  
eseguire in determinati controller che mi interessa, una sorta di  
contavisite.

Per intenderci l’informazione che a me serve Ã¨: Completed in 549ms piÃ¹  
in particolare 549

2009-07-03 10:36:32 INFO ==\>\>Completed in 549ms\<== (View: 185, DB: 22)  
| 200 OK [[http://localhost/manufacturing/product\_composed](http://localhost/manufacturing/product_composed)]
