<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>FaceitWeb.com &#187; layout</title>
	<atom:link href="http://www.faceitweb.com/tag/layout/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.faceitweb.com</link>
	<description>Recensioni e articoli sul mondo della programmazione</description>
	<lastBuildDate>Tue, 20 Jul 2010 12:34:40 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/>		<item>
		<title>LOG4J</title>
		<link>http://www.faceitweb.com/2008/10/log4j/</link>
		<comments>http://www.faceitweb.com/2008/10/log4j/#comments</comments>
		<pubDate>Mon, 27 Oct 2008 08:17:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[apache log4j]]></category>
		<category><![CDATA[apache software foundation]]></category>
		<category><![CDATA[APPENDER]]></category>
		<category><![CDATA[ConsoleAppender]]></category>
		<category><![CDATA[ConversionPattern]]></category>
		<category><![CDATA[DEBUG]]></category>
		<category><![CDATA[ERROR]]></category>
		<category><![CDATA[getLogger]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[j2ee]]></category>
		<category><![CDATA[jboss]]></category>
		<category><![CDATA[layout]]></category>
		<category><![CDATA[Log]]></category>
		<category><![CDATA[LOGGER]]></category>
		<category><![CDATA[RollingFileAppender]]></category>
		<category><![CDATA[tomcat]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.faceit.net23.net/?p=7</guid>
		<description><![CDATA[

Log4J è una libreria Java sviluppata dalla Apache Software Foundation come sistema di logging, utile per tenere sotto controllo il comportamento di un’applicazione. Per configurare ed utilizzare la libreria è necessario scrivere un file di properties (in formato xml), tipo di file molto noto nella tecnologia J2EE.
Per capire meglio il funzionamento di LOG4J andiamo a [...]]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p class="PadderBetweenControlandBody"><strong><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black;">Log4J</span></strong><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black;"> è una libreria Java sviluppata dalla <a title="Apache" href="http://www.apache.org/" target="_blank">Apache Software Foundation</a> come sistema di logging, utile per tenere sotto controllo il comportamento di un’applicazione. Per configurare ed utilizzare la libreria è necessario scrivere un file di <em>properties </em>(in formato xml), tipo di file molto noto nella tecnologia J2EE.</span></p>
<p class="MsoNormal" style="line-height: 13.5pt;"><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black;">Per capire meglio il funzionamento di LOG4J andiamo a vedere la sua struttura tipica:</span></p>
<p class="MsoNormal" style="line-height: 13.5pt;"><span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;">#LOGGER<br />
log4j.rootCategory=DEBUG, APPENDER_OUT, APPENDER_FILE</span></p>
<p>#APPENDER_OUT<br />
log4j.appender.APPENDER_OUT=org.apache.log4j.ConsoleAppender<br />
log4j.appender.APPENDER_OUT.layout=org.apache.log4j.PatternLayout<br />
log4j.appender.APPENDER_OUT.layout.ConversionPattern=%5p [%t] (%F:%L) &#8211; %m%n</p>
<p>#APPENDER_FILE<br />
log4j.appender.APPENDER_FILE=org.apache.log4j.RollingFileAppender<br />
log4j.appender.APPENDER_FILE.File=mioLog.log<br />
log4j.appender.APPENDER_FILE.MaxFileSize=100KB<br />
log4j.appender.APPENDER_FILE.MaxBackupIndex=1<br />
log4j.appender.APPENDER_FILE.layout=org.apache.log4j.PatternLayout<br />
log4j.appender.APPENDER_FILE.layout.ConversionPattern=%p %t %c &#8211; %m%n</p>
<p class="MsoNormal" style="line-height: 13.5pt;"><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black;">che permette di scrivere i log sia sulla console che su di un file di testo.</span></p>
<p class="MsoNormal" style="line-height: 13.5pt;"><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black;">Come possiamo vedere la struttura prevede due componenti principali: </span><strong><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black;">Logger</span></strong><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black;"> e </span><strong><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black;">Appender</span></strong><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black;">.</span></p>
<p class="MsoNormal" style="line-height: 13.5pt;"><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black;">Ogni <em>Logger</em> viene associato ad un livello di log:<strong> DEBUG, INFO, WARN, ERROR, FATAL</strong>. Riferendoci all’esempio sopra, possiamo vedere che il Logger è impostato con livello DEBUG e gli vengono associati due Appender: APPENDER_OUT e APPENDER_FILE. Ognuno di essi definisce un indirizzamento del flusso.</span></p>
<p class="MsoNormal" style="line-height: 13.5pt;"><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black;">Tra i vari Appender che Log4j mette a disposizione, i più utilizzati sono:</span></p>
<ul type="disc">
<li class="MsoNormal" style="color: black; line-height: 13.5pt;"><strong><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;">ConsoleAppender</span></strong><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;"> che permette di      scrivere sulla console dell&#8217;applicazione; </span></li>
<li class="MsoNormal" style="color: black; line-height: 13.5pt;"><strong><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;">FileAppender</span></strong><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;"> che permette di      scrivere su file; </span></li>
<li class="MsoNormal" style="color: black; line-height: 13.5pt;"><strong><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;">RollingFileAppender</span></strong><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;"> che permette di      scrivere su un file di testo definendone la lunghezza massima. Quando la      lunghezza massima è raggiunta, il file è rinominato aggiungendo un numero      progressivo al nome del file; </span></li>
<li class="MsoNormal" style="color: black; line-height: 13.5pt;"><strong><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;">DailyRollingFileAppender</span></strong><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;"> che permette di      scrivere su un file di testo definendone un intervallo di tempo massimo.      Quando il tempo scade, viene creato un altro file; </span></li>
<li class="MsoNormal" style="color: black; line-height: 13.5pt;"><strong><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;">SocketAppender</span></strong><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;"> che permette di      scrivere su un socket utilizzando il protocollo TCP/IP; </span></li>
<li class="MsoNormal" style="color: black; line-height: 13.5pt;"><strong><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;">JMSAppender</span></strong><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;"> che permette di      scrivere su una coda JMS; </span></li>
<li class="MsoNormal" style="color: black; line-height: 13.5pt;"><strong><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;">SMTPAppender</span></strong><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;"> che permette di      inviare mail utilizzando il protocollo SMTP e JavaMail. </span></li>
</ul>
<p class="MsoNormal" style="line-height: 13.5pt;"><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black;">Ovviamente ciascun Appender necessita di parametri di configurazione specifici. Ad esempio, il FileAppender ha bisogno della directory e del nome del file di log sul quale scrivere, mentre l&#8217;SMTPAppender ha bisogno dell&#8217;indirizzo del server SMTP. Nell&#8217;esempio il LOGGER_OUT è di tipo Console mentre il LOGGER_OUT è di tipo RollingFile. Inoltre a ciascun Appender è possibile associare un Layout con il quale è possibile specificare il modo in cui le informazioni devono essere formattate.</span></p>
<p class="MsoNormal" style="line-height: 13.5pt;"><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black;">Log4J mette a disposizione anche diverse tipologie di Layout predefinite. Le principali sono le seguenti:</span></p>
<ul type="disc">
<li class="MsoNormal" style="color: black; line-height: 13.5pt;"><strong><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;">SimpleLayout</span></strong><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;"> che produce      stringhe di testo semplice; </span></li>
<li class="MsoNormal" style="color: black; line-height: 13.5pt;"><strong><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;">PatternLayout</span></strong><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;"> che produce      stringhe di testo formattate secondo un pattern definito nel file di      configurazione; </span></li>
<li class="MsoNormal" style="color: black; line-height: 13.5pt;"><strong><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;">HTMLLayout</span></strong><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;"> che produce un      layout in formato HTML; </span></li>
<li class="MsoNormal" style="color: black; line-height: 13.5pt;"><strong><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;">XMLLayout</span></strong><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;"> che produce un      layout in formato XML. </span></li>
</ul>
<p class="MsoNormal" style="line-height: 13.5pt;"><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black;">Nel caso in cui il layout non viene specificato, log4j utilizza il SimpleLayout.</span></p>
<p class="MsoNormal" style="line-height: 13.5pt;"><span id="more-7"></span></p>
<p class="MsoNormal" style="line-height: 13.5pt; text-align: center;"><script type="text/javascript"><!--
google_ad_client = "pub-8488545646955443";
google_ad_slot = "1886844531";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</p>
<p class="MsoNormal" style="line-height: 13.5pt;"><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black;">Scendendo ancora di più nella praticità, andiamo a vedere come il file di cnfigurazion LOG4J viene utilizzato all’interno di un’applicazione</span></p>
<p class="MsoNormal" style="line-height: 13.5pt;"><span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;">public class MyLog4J {<br />
public static void main(String[] args) {<br />
</span><span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;">//carico il file di configurazione</span><span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"><br />
PropertyConfigurator.configure(&#8220;myLog.properties&#8221;);</span></p>
<p><span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;">//ottengo instanza del log</span><span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"><br />
Logger log = Logger.getLogger(MyLog4J.class);</span></p>
<p>log.debug(&#8220;Test Livello DEBUG&#8221;);<br />
log.info(&#8220;Test Livello INFO&#8221;);<br />
log.warn(&#8220;Test Livello WARNING&#8221;);<br />
log.error(&#8220;Test Livello ERROR&#8221;);<br />
log.fatal(&#8220;Test Livello FATAL&#8221;);<br />
}<br />
}</p>
<p class="MsoNormal" style="line-height: 13.5pt;"><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black;">Il file di configurazione viene caricato mediante il metodo (statico) </span><span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;">configure</span><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black;">, della classe </span><span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;">PropertyConfigurator</span><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black;">. Quest&#8217;operazione deve essere fatta solo una volta all&#8217;avvio dell&#8217;applicazione ma tuttavia non è necessaria qualora il file viene chiamato con il nome di default “log4j.properties”, poiché log4j si occupa automaticamente di invocare il metodo.</span></p>
<p class="MsoNormal" style="line-height: 13.5pt;"><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black;">Con il metodo statico </span><span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;">getLogger</span><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black;"> della classe Logger invece, otteniamo un&#8217;istanza della classe mediante la quale possiamo invocare uno dei metodi disponibili corrispondenti ai diversi livelli di log predefiniti. In entrambi i casi log4j utilizza il pattern </span><span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;">Singleton</span><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black;"> per cui, se in vari punti della applicazione si invoca un Logger con lo stesso nome, si otterrà sempre la stessa istanza.</span></p>
<p class="MsoNormal" style="line-height: 13.5pt;"><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black;">Ad esempio scrivendo:</span></p>
<p class="MsoNormal" style="line-height: 13.5pt;"><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black;">Logger log1 = Logger.getLogger(&#8220;myLog&#8221;);<br />
Logger log2 = Logger.getLogger(&#8220;myLog&#8221;); </span></p>
<p class="MsoNormal" style="line-height: 13.5pt;"><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black;">otteniamo due variabili che puntano alla stessa istanza.</span></p>
<p class="MsoNormal" style="line-height: 13.5pt;"><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black;">Se eseguiamo l&#8217;esempio notiamo che sia sulla console, sia sul file di log, vengono stampate le 5 voci perché il livello definito nel file di configurazione è DEBUG che si trova al gradino più basso della gerarchia. Se impostiamo il livello ad ERROR, ad esempio, noteremo come vengano stampati esclusivamente i messaggi di ERROR e FATAL. </span></p>
<p class="MsoNormal" style="line-height: 13.5pt;"><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black;">Molto spesso il log viene utilizzato in fase di sviluppo per analizzare il corretto funzionamento dell&#8217;applicazione. Quando l&#8217;applicazione è terminata, è opportuno monitorare esclusivamente gli eventi più gravi. Con log4j ciò è possibile semplicemente modificando il file di configurazione. Ad esempio, nella nostra applicazione, potremo prevedere log di livello DEBUG per tenere traccia di alcune informazioni utili durante lo sviluppo, come il valore di particolari variabili, e log di livello ERROR per tenere traccia di informazioni utili quando l&#8217;applicazione è finita.</span></p>
<p class="MsoNormal" style="line-height: 13.5pt;"><span style="font-size: 9pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black;">Nel momento in cui l&#8217;applicazione è pronta per essere utilizzata basta soltanto modificare il livello di log (sostituire DEBUG con ERROR) nel file di configurazione e tutto continua a funzionare senza dover modificare i sorgenti e ricompilarli.</span></p>
<p class="buymebeer"><form action="https://www.paypal.com/cgi-bin/webscr" target="paypal" method="post"><input type="hidden" name="cmd" value="_xclick" /><input type="hidden" name="business" value="fabio.cervino@poste.it" /><input type="hidden" name="return" value="Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com" /><input type="hidden" name="item_name" value="Offri un caffè allo staff for LOG4J" /><input type="hidden" name="currency_code" value="EUR" /><input type="hidden" name="amount" value="" /><input type="image" src="http://www.faceitweb.com/wp-content/plugins/buy-me-beer/icon_cafe.gif" align="left" alt="Offrimi un caffè" title="Offrimi un caffè" hspace="3" /></form><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&amp;business=fabio.cervino@poste.it&amp;currency_code=EUR&amp;amount=&amp;return=Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com&amp;item_name=Offri+un+caffè+allo+staff+for+LOG4J" target="paypal"></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.faceitweb.com/2008/10/log4j/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

<!-- www.000webhost.com Analytics Code -->
<script type="text/javascript" src="http://analytics.hosting24.com/count.php"></script>
<noscript><a href="http://www.hosting24.com/"><img src="http://analytics.hosting24.com/count.php" alt="web hosting" /></a></noscript>
<!-- End Of Analytics Code -->
