{"id":11943,"date":"2016-09-22T18:13:41","date_gmt":"2016-09-22T16:13:41","guid":{"rendered":"http:\/\/www.devapp.it\/wordpress\/?p=11943"},"modified":"2016-09-22T18:18:42","modified_gmt":"2016-09-22T16:18:42","slug":"monolog-un-logger-in-php","status":"publish","type":"post","link":"https:\/\/www.devapp.it\/wordpress\/monolog-un-logger-in-php\/","title":{"rendered":"Monolog, un logger in PHP"},"content":{"rendered":"<p>Quando le applicazioni crescono, tracciarne il funzionamento interno non \u00e8 cosa semplice. Per questo esistono strumenti dedicati al salvataggio di log su supporto fisico in modo tale che si possa,successivamente, monitorare le varie attivit\u00e0 svolte dal servizio. In PHP, esiste uno strumento ormai famosissimo che prende il nome di <a href=\"https:\/\/github.com\/Seldaek\/monolog\" target=\"_blank\">Monolog<\/a>.<\/p>\n<p>Si tratta di un logger in grado di salvare i nostri messaggi su file, database, inviarli tramite stream o posta elettronica. In base a quale di questi comportamenti vorremo attivare sar\u00e0 sufficiente configurare uno degli appositi <em>Handler<\/em> di cui dispone.<\/p>\n<p>Lo si installa rapidamente grazie a Composer:<\/p>\n<pre class=\"lang:sh decode:true \">$ composer require monolog\/monolog<\/pre>\n<p>e lo si pu\u00f2 mettere subito al lavoro cos\u00ec:<\/p>\n<pre class=\"lang:php decode:true\">&lt;?php\r\n\r\nuse Monolog\\Logger;\r\nuse Monolog\\Handler\\StreamHandler;\r\n\r\n$log = new Logger('log');\r\n$log-&gt;pushHandler(new StreamHandler('\/var\/mylogs\/myapp.log', Logger::WARNING));\r\n\r\n$log-&gt;addWarning('primo messaggio');<\/pre>\n<p>Prima si imposta un canale di log, poi si sceglie un Handler che, in questo caso, dirotta i log su file. Infine, si pu\u00f2 iniziare ad inviare\u00a0dei messaggi di log: quello dell&#8217;esempio \u00e8 stato inoltrato con livello Warning. Come in altre tecnologie i messaggi di log, in base al proprio\u00a0significato, vengono associati ad\u00a0un livello di importanza come Debug (informazioni sul funzionamento), Info (messaggi rilevanti), Error (situazioni di errore) e molti altri. Anche Logger, come spiega nella\u00a0<a href=\"https:\/\/github.com\/Seldaek\/monolog\/blob\/master\/doc\/01-usage.md#log-levels\" target=\"_blank\">documentazione<\/a>, aderisce a tale prassi.<\/p>\n<p>Il successo che ha riscosso questo strumento lo ha reso conosciutissimo tra le librerie open source vedendolo integrato\u00a0nei principali framework per PHP. Proviamolo e non saremo mai pi\u00f9 all&#8217;oscuro di cosa succede nelle nostre applicazioni!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Quando le applicazioni crescono, tracciarne il funzionamento interno non \u00e8 cosa semplice. Per questo esistono strumenti dedicati&#8230;<\/p>\n","protected":false},"author":561,"featured_media":12378,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[481],"tags":[1665,1754,1664,1596,1718],"class_list":["post-11943","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-risorse-utili","tag-composer","tag-logger-php","tag-monolog","tag-programmatori-web","tag-sviluppo-web"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/11943","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/users\/561"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/comments?post=11943"}],"version-history":[{"count":4,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/11943\/revisions"}],"predecessor-version":[{"id":12379,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/11943\/revisions\/12379"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media\/12378"}],"wp:attachment":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media?parent=11943"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/categories?post=11943"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/tags?post=11943"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}