<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CUEBR3c8fip7ImA9WhRaFE4.&quot;"><id>tag:blogger.com,1999:blog-2611760040153227514</id><updated>2012-02-16T15:07:36.976-08:00</updated><category term="C#" /><category term="Gerência de Projetos" /><category term="Design Patterns" /><category term="Enterprise Library" /><category term="PMBOK" /><title>WebZero code</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://webzerocode.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://webzerocode.blogspot.com/" /><author><name>marques.leo</name><uri>http://www.blogger.com/profile/07316575638351995540</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>7</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/Webzerocode" /><feedburner:info uri="webzerocode" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;Ck8NSX4yfyp7ImA9Wx5TFE4.&quot;"><id>tag:blogger.com,1999:blog-2611760040153227514.post-1804589646800980783</id><published>2010-07-29T12:14:00.000-07:00</published><updated>2010-07-29T12:14:58.097-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-29T12:14:58.097-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PMBOK" /><category scheme="http://www.blogger.com/atom/ns#" term="Gerência de Projetos" /><title>Gerência de Projetos</title><content type="html">Como "diria" a Wikipédia: "Gerência de projetos, gestão de projetos, gerenciamento de projetos ou ainda administração de projetos é a aplicação de conhecimentos, habilidades e técnicas na elaboração de atividades relacionadas para atingir um conjunto de objetivos pré-definidos, num certo prazo, com um certo custo e qualidade, através da mobilização de recursos técnicos e humanos."&lt;br /&gt;
&lt;br /&gt;
Andei fazendo um curso nestas férias de inverno e, dentre o material disponibilizado, está um resumo sobre gerência de projetos que achei bem interessante.&lt;br /&gt;
&lt;br /&gt;
O material é bem básico, indicado, principalmente, àqueles que querem aprender os principais conceitos da área e conhecer um pouco sobre o PMBOK.&lt;br /&gt;
&lt;br /&gt;
Clique no link abaixo para baixar o material.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://docs.google.com/fileview?id=0B77NX_Vle6SOZjZmOGJmMjItOWI3OS00MjU1LWIzYmUtOGFjNDY3YjAzMTZi&amp;amp;hl=en"&gt;Introdução Gerência de Projetos - Download&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2611760040153227514-1804589646800980783?l=webzerocode.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/4hpZEM3wRtUGJx8e1X9Gtzx57kg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4hpZEM3wRtUGJx8e1X9Gtzx57kg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/4hpZEM3wRtUGJx8e1X9Gtzx57kg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4hpZEM3wRtUGJx8e1X9Gtzx57kg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Webzerocode/~4/Omt-smviyjw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webzerocode.blogspot.com/feeds/1804589646800980783/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://webzerocode.blogspot.com/2010/07/gerencia-de-projetos.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2611760040153227514/posts/default/1804589646800980783?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2611760040153227514/posts/default/1804589646800980783?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Webzerocode/~3/Omt-smviyjw/gerencia-de-projetos.html" title="Gerência de Projetos" /><author><name>marques.leo</name><uri>http://www.blogger.com/profile/07316575638351995540</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://webzerocode.blogspot.com/2010/07/gerencia-de-projetos.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MERnk9fip7ImA9WxFRGUQ.&quot;"><id>tag:blogger.com,1999:blog-2611760040153227514.post-2127937331991063007</id><published>2010-05-04T09:43:00.000-07:00</published><updated>2010-05-04T09:43:27.766-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-04T09:43:27.766-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><title>Menu do asp.net não funciona no Google Chrome</title><content type="html">Este erro, ao contrário do que os outros pensam, não é do Chrome ou do Safari e sim do próprio ASP.NET.&lt;br /&gt;
&lt;br /&gt;
Para gerar o código JavaScript do menu, o ASP.NET verifica qual é o browser do cliente, e se ele suporta ou não JavaScript. Acontece que esta verificação falha em alguns browsers como o Sarafi e consequentemente o Chrome (pois o Chrome foi baseado no Safari), e o &amp;nbsp;ASP.NET então devolve um código que não funciona.&lt;br /&gt;
&lt;br /&gt;
Para corrigir isto devemos “forçar” o ASP.NET a executar o JavaScript, para isto setamos a propriedade Page.ClientTarget com o valor “uplevel”. Assim informamos que o cliente possui um moderno “uplevel” browser.&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Devemos fazer isto para todas as páginas que utilizarão o menu. O código deverá estar dentro do evento Page_Init da página. Ex:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="color: #000088; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;protected&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: #000088; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;void&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: #660066; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Page_PreInit&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: #666600; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: #000088; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;object&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; sender&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: #666600; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: #660066; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;EventArgs&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; e&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: #666600; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="color: #666600; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: #000088; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: #666600; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: #660066; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Page&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: #666600; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: #660066; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Request&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: #666600; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: #660066; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;ServerVariables&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: #666600; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: #008800; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;"http_user_agent"&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: #666600; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;].&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: #660066; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;ToLower&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: #666600; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;().&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: #660066; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Contains&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: #666600; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: #008800; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;"chrome"&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: #666600; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;))&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: #666600; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: #660066; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Page&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: #666600; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: #660066; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;ClientTarget&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: #666600; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: #008800; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;"uplevel"&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: #666600; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: #666600; font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span lang="EN-US" style="color: #666600; font-family: 'Courier New';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: 'Courier New'; font-size: 7.5pt;"&gt;&lt;br style="mso-special-character: line-break;" /&gt; &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Neste código, fazemos uma verificação se o user_agent possui a palavra 'chrome', que servirá também pro safari, se sim, forçamos o uplevel.&lt;br /&gt;
&lt;br /&gt;
Para evitar de “copiar” e “colar” o mesmo código em todas as páginas, você poderá aproveitar o que há de melhor da programação orienteda a objetos, a herânça. Para isto crie uma classe herdando de System.Web.UI.Page e coloque este código nela. Para todas as suas páginas, ao invés de herdar diretamente de System.Web.UI.Page, você herda da classe que acabou de criar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2611760040153227514-2127937331991063007?l=webzerocode.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/oc2muG22Jz_p1-Th2X_hIgaPJwI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oc2muG22Jz_p1-Th2X_hIgaPJwI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/oc2muG22Jz_p1-Th2X_hIgaPJwI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oc2muG22Jz_p1-Th2X_hIgaPJwI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Webzerocode/~4/MR_wc9xc98E" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webzerocode.blogspot.com/feeds/2127937331991063007/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://webzerocode.blogspot.com/2010/05/menu-do-aspnet-nao-funciona-no-google.html#comment-form" title="3 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2611760040153227514/posts/default/2127937331991063007?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2611760040153227514/posts/default/2127937331991063007?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Webzerocode/~3/MR_wc9xc98E/menu-do-aspnet-nao-funciona-no-google.html" title="Menu do asp.net não funciona no Google Chrome" /><author><name>marques.leo</name><uri>http://www.blogger.com/profile/07316575638351995540</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>3</thr:total><feedburner:origLink>http://webzerocode.blogspot.com/2010/05/menu-do-aspnet-nao-funciona-no-google.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEYCRXY7eip7ImA9WxFRGEQ.&quot;"><id>tag:blogger.com,1999:blog-2611760040153227514.post-1194065648823981452</id><published>2010-05-03T07:00:00.000-07:00</published><updated>2010-05-03T07:16:04.802-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-03T07:16:04.802-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Design Patterns" /><title>Como nomear seus objetos</title><content type="html">&lt;span class="Apple-style-span" style="color: #61636a; font-family: 'Lucida Grande', Verdana, Arial, sans-serif; font-size: 11px; line-height: 15px;"&gt;&lt;/span&gt;&lt;br /&gt;
Como estou em meio a&amp;nbsp;discussões&amp;nbsp;sobre padrões resolvi postar este texto retirado do blog do Giovanni Bassi. Já havia colocado isto no meu antigo blog, mas acho ele muito bom e vou colocar novamente.&lt;br /&gt;
Segue então :&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: black;"&gt;Estou no meio de uma&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.giovannibassi.com/Servicos/Consultoria" style="text-decoration: none;" target="_blank"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;consultoria&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;, o cliente me pede para ver o código. Eu vou ver o código, claro. Eu olho a classe, olho os métodos, não entendo nada.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;br /&gt;
“ClienteDB”. Isso é nome de classe? O que será que quer dizer? Deixa eu ver o nome das funções. “ObterDados”. Nossa, que dados serão esses? Devem ser do cliente, e deve ter alguma coisa a ver com um banco de dados (tem o tal “DB” no final). Mas retorna booleano! Será que esses dados são da conexão com o banco de dados? Não, não, tem um método aqui chamado “Configurar”. Configurar… o quê? Será que é a conexão também? Ou será que é configurar o cliente?&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: black;"&gt;Vou então examinar as variáveis. Dentro de um método encontro variáveis com nomes muito interessantes:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;“obj”;&lt;/li&gt;
&lt;li&gt;“oCliente”;&lt;/li&gt;
&lt;li&gt;“i”&lt;/li&gt;
&lt;li&gt;;“cmp”.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: black;"&gt;Agora ficou fácil!&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: black;"&gt;O mesmo acontece quando estou dando aula. Vem o aluno e me mostra a classe. “Quarto”. Métodos: “dormir” e “acordar”. O quarto pode dormir? Tudo bem, são alunos, eles podem. Aí é legal, o aluno entende que está aprendendo, aproveita as sugestões e vai em frente, no próximo ele acerta. Mas programadores experientes?&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: black;"&gt;Nomear classes (e funções, propriedades, eventos, ou seja, estruturas em geral) é importante. Se você não consegue dar um nome para sua classe, talvez ela esteja violando o&amp;nbsp;&lt;/span&gt;&lt;a href="http://unplugged.giggio.net/post/Principio-da-responsabilidade-unica.aspx" style="text-decoration: none;" target="_blank"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;princípio da responsabilidade única&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;. Ou talvez ela não tenha um conceito sólido. De qualquer forma, não dê qualquer nome, é pior. Dê um nome expressivo.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: black;"&gt;Não se esqueça de que o usuário final da aplicação não é o único. O próximo desenvolvedor que vier depois de você dar manutenção na aplicação também é usuário, só que de outro ponto de vista.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: black;"&gt;Além disso, não use&amp;nbsp;&lt;/span&gt;&lt;a href="http://pt.wikipedia.org/wiki/Nota%C3%A7%C3%A3o_h%C3%BAngara" style="text-decoration: none;" target="_blank"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;notação húngara&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&amp;nbsp;em objetos de negócio. Se você gosta muito de notação húngara, use apenas em objetos de GUI, como txtNome, para textboxes. Não crie “oCliente”, ou “objCliente”, ou “cliNovo”. Não crie “intAnos”. Se são anos, só podem ser inteiros, chame de “anos”! Se é um cliente novo, chame de “clienteNovo”. Fica mais fácil de ler.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;b&gt;Entrando em uma questão mais de estilo pessoal:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: black;"&gt;Não use underline/underscore para definir nomes. Nada pior que “nome_completo”. Use lower&amp;nbsp;&lt;/span&gt;&lt;a href="http://pt.wikipedia.org/wiki/CamelCase" style="text-decoration: none;" target="_blank"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;CamelCase&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&amp;nbsp;para variáveis e campos, como “nomeCompleto”, e upper CamelCase para classes, métodos, eventos e propriedades “NomeCompleto”, “Andar()”, “Click”. E use this (C#)/Me(VB) quando acessar campos ou propriedades de uma classe.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: black;"&gt;Enfim, torne seu código legível (questões de estilo – CamelCase, húngara, underline, etc), e expressivo (usando nomes que explicam a estrutura que nomeiam). O mundo inteiro agradece.&lt;/span&gt;&lt;br /&gt;
&lt;h5&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;Fonte:&amp;nbsp; http://unplugged.giggio.net/unplugged/post/Como-nomear-seus-objetos.aspx&lt;/span&gt;&lt;/h5&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2611760040153227514-1194065648823981452?l=webzerocode.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/QQE4PC4kk57KUDftRvRpN-E-aoQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QQE4PC4kk57KUDftRvRpN-E-aoQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/QQE4PC4kk57KUDftRvRpN-E-aoQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QQE4PC4kk57KUDftRvRpN-E-aoQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Webzerocode/~4/o1N_XPzR07w" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webzerocode.blogspot.com/feeds/1194065648823981452/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://webzerocode.blogspot.com/2010/05/como-nomear-seus-objetos.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2611760040153227514/posts/default/1194065648823981452?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2611760040153227514/posts/default/1194065648823981452?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Webzerocode/~3/o1N_XPzR07w/como-nomear-seus-objetos.html" title="Como nomear seus objetos" /><author><name>marques.leo</name><uri>http://www.blogger.com/profile/07316575638351995540</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://webzerocode.blogspot.com/2010/05/como-nomear-seus-objetos.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUQEQH89eSp7ImA9WxFRFUs.&quot;"><id>tag:blogger.com,1999:blog-2611760040153227514.post-7069808053207362843</id><published>2010-04-29T07:08:00.000-07:00</published><updated>2010-04-29T10:48:21.161-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-29T10:48:21.161-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Enterprise Library" /><title>Enterprise Library 5</title><content type="html">Dia 20 de abril foi lançada a versão final da Enterprise Library 5.0.&lt;br /&gt;
&lt;br /&gt;
Enterprise Library é uma coleção de módulos(Application Blocks) reutilizáveis que auxiliam no desenvolvimento de aplicações corporativas visando suprir algumas necessidades comuns a estas aplicações.&lt;br /&gt;
&lt;br /&gt;
De acordo com a Microsoft as principais novidades do EntLib 5 são:&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Suporte para configuração programática, incluindo uma interface amigável de configuração e um esquema XSD para habilitar o IntelliSense&lt;/li&gt;
&lt;li&gt;Suporte ao acesso a dados assíncrono&lt;/li&gt;
&lt;li&gt;Validação de atributos entre Application Block Validation e DataAnnotations&lt;/li&gt;
&lt;li&gt;Integração com os mecanismos de validação do Windows Presentation Foundation (WPF)&lt;/li&gt;
&lt;li&gt;Suporte a configuração de cenários complexos, incluindo configuração de mutiplas fontes e também hierárquicamente&lt;/li&gt;
&lt;li&gt;Otimização da limpeza do cache&lt;/li&gt;
&lt;li&gt;Melhor desempenho para o log&lt;/li&gt;
&lt;li&gt;Supporte ao .NET 4.0 Framework e integração com Microsoft Visual Studio 2010&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Redesign da ferramenta de configuração para oferecer:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Maior usabilidade e controles mais intuitivos&lt;/li&gt;
&lt;li&gt;Melhorias&amp;nbsp;estendidas&amp;nbsp;por meio da&amp;nbsp;configuração de&amp;nbsp;visualização&amp;nbsp;&amp;nbsp;de&amp;nbsp;meta-dados para substituir a obrigação de escrever o código em tempo de design&lt;/li&gt;
&lt;li&gt;Um Wizard que simplifica configurações complexas&lt;/li&gt;
&lt;li&gt;Novos modos de acesso a dados para um processamento mais intuitivo dos resultados das consultas&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
A lista detalhada com as mudanças do EntLib 5 pode ser vista &lt;a href="http://entlib.codeplex.com/wikipage?title=EntLib5ChangeLog"&gt;aqui&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Download e Documentação&lt;/b&gt;&lt;br /&gt;
Para fazer o download do EntLib 5 e/ou da documentação clique &lt;a href="http://entlib.codeplex.com/releases/view/43135"&gt;aqui&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2611760040153227514-7069808053207362843?l=webzerocode.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/K84XKWYIvNKz4UGnE-qtOnbVryA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/K84XKWYIvNKz4UGnE-qtOnbVryA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/K84XKWYIvNKz4UGnE-qtOnbVryA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/K84XKWYIvNKz4UGnE-qtOnbVryA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Webzerocode/~4/Z0W-4jOAvAM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webzerocode.blogspot.com/feeds/7069808053207362843/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://webzerocode.blogspot.com/2010/04/enterprise-library-5.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2611760040153227514/posts/default/7069808053207362843?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2611760040153227514/posts/default/7069808053207362843?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Webzerocode/~3/Z0W-4jOAvAM/enterprise-library-5.html" title="Enterprise Library 5" /><author><name>marques.leo</name><uri>http://www.blogger.com/profile/07316575638351995540</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://webzerocode.blogspot.com/2010/04/enterprise-library-5.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUMGQXw_eCp7ImA9WxFRFUs.&quot;"><id>tag:blogger.com,1999:blog-2611760040153227514.post-1906855433675141214</id><published>2010-04-28T05:17:00.000-07:00</published><updated>2010-04-29T10:50:20.240-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-29T10:50:20.240-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Enterprise Library" /><title>Como criar um CustomTraceListener ?</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_lASvn9Zri4E/S82Wzsmpu1I/AAAAAAAAAPc/DkZv2RMjTWw/s1600/msPatternsPratices.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_lASvn9Zri4E/S82Wzsmpu1I/AAAAAAAAAPc/DkZv2RMjTWw/s320/msPatternsPratices.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
O EnterpriseLibrary, além de disponibilizar algumas formas padrão para log, nos permite criar uma customização do TraceListener.&lt;br /&gt;
&lt;br /&gt;
Neste post vou mostrar como criar um&amp;nbsp;CustomTraceListener para logar as informações.&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&amp;nbsp;Para modificar o modo com que sua classe gravará as informações basta modificar o método "WriteLine()" e/ou "Write()" inserindo o código para gravar em banco de dados, arquivo, Event Viewer, e-mail ou seja lá qual for sua vontade.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;Criando o&amp;nbsp;MyCustomTraceListener&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Adicione uma nova classe chamada "MyCustomTraceListener" ao seu projeto.&lt;/li&gt;
&lt;li&gt;Especifique que a classe deriva "CustomTraceListener".&lt;/li&gt;
&lt;li&gt;Adicione o atributo de classe "ConfigurationElementType" . Especifique o tipo "CustomTraceListenerData" como o parâmetro de atributo.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;[&lt;span style="color: #2b91af;"&gt;ConfigurationElementType&lt;/span&gt;(&lt;span style="color: blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;CustomTraceListenerData&lt;/span&gt;))] &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt; line-height: 115%;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;MyCustomTraceListener&lt;/span&gt; : &lt;span style="color: #2b91af;"&gt;CustomTraceListener&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Sobrescreva&amp;nbsp;o método "TraceData" da classe "CustomTraceListener". Este método é que será chamado pelo EntLib na hora de realizar o trace nos objetos de log.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: 'Courier New'; font-size: 10pt;"&gt;public&lt;/span&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt;"&gt; &lt;span style="color: blue;"&gt;override&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; TraceData(&lt;span style="color: #2b91af;"&gt;TraceEventCache&lt;/span&gt; eventCache, &lt;span style="color: blue;"&gt;string&lt;/span&gt; source, &lt;span style="color: #2b91af;"&gt;TraceEventType&lt;/span&gt; eventType, &lt;span style="color: blue;"&gt;int&lt;/span&gt; id, &lt;span style="color: blue;"&gt;object&lt;/span&gt; data)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (data &lt;span style="color: blue;"&gt;is&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;LogEntry&lt;/span&gt; &amp;amp;&amp;amp; &lt;span style="color: blue;"&gt;this&lt;/span&gt;.Formatter != &lt;span style="color: blue;"&gt;null&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;this&lt;/span&gt;.WriteLine(&lt;span style="color: blue;"&gt;this&lt;/span&gt;.Formatter.Format(data &lt;span style="color: blue;"&gt;as&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;LogEntry&lt;/span&gt;));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;else&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;this&lt;/span&gt;.WriteLine(data.ToString());&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt; line-height: 115%;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Sobrescreva os métodos "Write" e "WriteLine". Estes métodos serão chamados pelo seu TraceData, neles é que você deverá implementar o modo com que deseja salvar os logs de sua aplicação.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: 'Courier New'; font-size: 10pt;"&gt;public&lt;/span&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt;"&gt; &lt;span style="color: blue;"&gt;override&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Write(&lt;span style="color: blue;"&gt;string&lt;/span&gt; message)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;//implementação do modo de log&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt; line-height: 115%;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: 'Courier New'; font-size: 10pt;"&gt;public&lt;/span&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;override&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;void&lt;/span&gt;&amp;nbsp;WriteLine(&lt;span style="color: blue;"&gt;string&lt;/span&gt;&amp;nbsp;message)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: green;"&gt;//implementação do modo de log&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt; line-height: 14px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Pronto, seu CustomTraceListener está criado. Para utilizá-lo basta adicionar este projeto a sua solução e depois criar um novo TraceListener, adicionando como Type &amp;nbsp;o MyCustomTraceListener.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2611760040153227514-1906855433675141214?l=webzerocode.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/D4PQzcEFqo1eL2JOBdlEvVUCqME/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/D4PQzcEFqo1eL2JOBdlEvVUCqME/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/D4PQzcEFqo1eL2JOBdlEvVUCqME/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/D4PQzcEFqo1eL2JOBdlEvVUCqME/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Webzerocode/~4/HN68ylifVqY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webzerocode.blogspot.com/feeds/1906855433675141214/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://webzerocode.blogspot.com/2010/04/como-criar-um-customtracelistener.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2611760040153227514/posts/default/1906855433675141214?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2611760040153227514/posts/default/1906855433675141214?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Webzerocode/~3/HN68ylifVqY/como-criar-um-customtracelistener.html" title="Como criar um CustomTraceListener ?" /><author><name>marques.leo</name><uri>http://www.blogger.com/profile/07316575638351995540</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_lASvn9Zri4E/S82Wzsmpu1I/AAAAAAAAAPc/DkZv2RMjTWw/s72-c/msPatternsPratices.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://webzerocode.blogspot.com/2010/04/como-criar-um-customtracelistener.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkQFRn06eCp7ImA9WxFRFUs.&quot;"><id>tag:blogger.com,1999:blog-2611760040153227514.post-1697483896991361242</id><published>2010-04-19T07:47:00.000-07:00</published><updated>2010-04-29T11:05:17.310-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-29T11:05:17.310-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><title>Como gerar uma SQLException manualmente ?</title><content type="html">Estava eu criando um projeto para testar um CustomTraceListener que grava um log no banco de dados de acordo com o tipo de exceção.&lt;br /&gt;
Com isso, precisei criar um método que gerasse uma SQLException.&lt;br /&gt;
&lt;br /&gt;
Não é possível gerar uma SQLException manualmente em C#, pois a classe SQLException não possui um construtor público.&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Mas nós podemos gerar esta exceção indiretamente, usando a função RAISEERROR do SQLServer.&lt;br /&gt;
&lt;br /&gt;
Por Exemplo:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: 'Courier New'; font-size: 8pt;"&gt;try&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: #2b91af;"&gt;SqlCommand&lt;/span&gt; cmd =&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 8pt;"&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;SqlCommand&lt;/span&gt;(&lt;span style="color: #a31515;"&gt;"raiserror('Manual SQLException', 16, 1)"&lt;/span&gt;,objConnection);&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cmd.ExecuteNonQuery();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 8pt;"&gt;c&lt;span style="color: blue;"&gt;atch&lt;/span&gt; (&lt;span style="color: #2b91af;"&gt;SqlException&lt;/span&gt; sqlEx)&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: blue;"&gt;string&lt;/span&gt; msg = sqlEx.Message; &lt;span style="color: green;"&gt;//msg = "Manual SQLException"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"&gt;}&lt;/span&gt;&lt;span style="font-size: 8pt; line-height: 115%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
O código acima irá lançar uma SqlExpcetion mas o problema aqui é que demora um tempo de ida e volta ao banco de dados para executar a função RaiseError, porém, como estou usando somente para testes, o round trip, no meu caso, não é relevante.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2611760040153227514-1697483896991361242?l=webzerocode.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/LtY5cALGP4y6vVELx_LQRJgzWsU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LtY5cALGP4y6vVELx_LQRJgzWsU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/LtY5cALGP4y6vVELx_LQRJgzWsU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LtY5cALGP4y6vVELx_LQRJgzWsU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Webzerocode/~4/EuCvsFFF3cU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webzerocode.blogspot.com/feeds/1697483896991361242/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://webzerocode.blogspot.com/2010/04/como-gerar-uma-sqlexception-manualmente.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2611760040153227514/posts/default/1697483896991361242?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2611760040153227514/posts/default/1697483896991361242?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Webzerocode/~3/EuCvsFFF3cU/como-gerar-uma-sqlexception-manualmente.html" title="Como gerar uma SQLException manualmente ?" /><author><name>marques.leo</name><uri>http://www.blogger.com/profile/07316575638351995540</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://webzerocode.blogspot.com/2010/04/como-gerar-uma-sqlexception-manualmente.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0cCQ3s_eyp7ImA9WxFTF0g.&quot;"><id>tag:blogger.com,1999:blog-2611760040153227514.post-3010845265594858731</id><published>2010-04-08T10:42:00.000-07:00</published><updated>2010-04-08T11:24:22.543-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-08T11:24:22.543-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Enterprise Library" /><title>Log com .NET Enterprise Library</title><content type="html">Uma solução de log para a plataforma .NET é o Logging Application Block, que pertence à Enterprise Library (também conhecido como EntLib).&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
Além dessa biblioteca facilitar o uso de log, ela gera saídas que podem ser direcionadas para vários destinos. Algumas das possibilidades são:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;O log de eventos do Windows&lt;/li&gt;
&lt;li&gt;Uma mensagem de e-mail&lt;/li&gt;
&lt;li&gt;Um banco de dados&lt;/li&gt;
&lt;li&gt;Uma fila de mensagem&lt;/li&gt;
&lt;li&gt;Um arquivo texto&lt;/li&gt;
&lt;li&gt;Um evento WMI&lt;/li&gt;
&lt;/ul&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Para o código a maneira como a informação será logada fica transparente já que isso é configurado no App.config ou Web.config.&lt;br /&gt;
&lt;br /&gt;
Os principais elementos configurados são:&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Formatters&lt;/b&gt;: definem o formato do texto a ser logado;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Trace Listeners&lt;/b&gt;: definem o destino do log;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Category Sources&lt;/b&gt;: permitem classificar os Trace Listeners em categorias.&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
Para vermos algumas funcionalidades do Logging do EntLib vamos criar uma aplicação para 'logar' informações a respeito de erros em processos no log de eventos do Windows. Vamos criar uma categoria para os logs de erro nos processos chamada “MyErro”.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;Essa categoria vai possuir um Trace Listeners para o log de eventos do Windows, para simplificar vamos incluir apenas um Trace Listener, mas é possível adicionar outros como, por exemplo, um para log em arquivos, em banco de dados entre outros.&lt;br /&gt;
&lt;br /&gt;
Para isso:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;No Visual Studio, crie um novo projeto do tipo Console Application.&lt;/li&gt;
&lt;li&gt;No projeto, adicione um novo item do tipo Application Configuration File.&lt;/li&gt;
&lt;li&gt;No Solution Explorer clique com o botão direito no App.config e selecione Edit Enterprise Library Configuration.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_lASvn9Zri4E/S73sUOfrxmI/AAAAAAAAAOw/DXNU7KioHwk/s1600/img1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_lASvn9Zri4E/S73sUOfrxmI/AAAAAAAAAOw/DXNU7KioHwk/s320/img1.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Na tela que abriu, clique com o botão direito no item correspondente ao App.config e selecione New &amp;gt; Logging Application Block para criar um novo nível na árvore chamado Logging Application Block.&lt;/li&gt;
&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_lASvn9Zri4E/S74MW-dx1QI/AAAAAAAAAPA/iiJ0KGoJ4GI/s1600/img3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_lASvn9Zri4E/S74MW-dx1QI/AAAAAAAAAPA/iiJ0KGoJ4GI/s320/img3.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;ul&gt;&lt;li&gt;Caso não exista nenhum&amp;nbsp;sub item&amp;nbsp;dentro do item "Formatters", clique com o botão direito em "Formatters" e escolha New &amp;gt; Text Formatter .&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Na janela Properties mude o nome para “txtFormatterTeste” e clique no botão “…” do Template. No Template Editor, mude o texto para “{timestamp} {severity} – Erro no processo {processName}”. Agora temos um Formatter que irá gerar mensagens do tipo “08/04/2010 14:13:21 Error – Erro no processo umProcesso”, caso queira mais informações basta adicionar as demais tags. Por padrão, ao criar um&amp;nbsp;Text Formatter a mensagem inicial contém todas as tags&amp;nbsp;.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_lASvn9Zri4E/S74JLsdFmAI/AAAAAAAAAO4/ADrHldYePyE/s1600/img2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_lASvn9Zri4E/S74JLsdFmAI/AAAAAAAAAO4/ADrHldYePyE/s320/img2.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Crie um Trace Listener do tipo Formatted EventLog Trace Listener. Na janela Properties mude o seu Formatter para 'txtFormatterTeste'.&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Em Category Sources clique com o botão direito e vá em New &amp;gt; Category e renomeie-a para “MyErro”.&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Clique com o botão direito na categoria “MyErro” e vá em New &amp;gt; Trace Listener Reference. Altere ReferencedTraceListener para&amp;nbsp;Formatted EventLog TraceListener criado por você.&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Salve o arquivo App.config que você está editando.&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;No Solution Explorer, adicione uma referência ao componente .NET chamado “Enterprise Library Logging Application Block”.&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Edite o código de sua classe para esse&amp;nbsp;(cuide o namespace e o nome da classe):&lt;/li&gt;
&lt;/ul&gt;&lt;span class="Apple-style-span" style="color: blue; font-family: 'Courier New'; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 11px; line-height: 16px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New'; font-size: 11px; line-height: 16px;"&gt;&lt;span style="color: blue;"&gt;using&lt;/span&gt;&amp;nbsp;System;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New'; font-size: 11px; line-height: 16px;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New'; font-size: 11px; line-height: 16px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="color: blue;"&gt;using&lt;/span&gt;&amp;nbsp;Microsoft.Practices.EnterpriseLibrary.Logging;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="color: blue;"&gt;using&lt;/span&gt;&amp;nbsp;System.Diagnostics;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="color: blue;"&gt;namespace&lt;/span&gt;&amp;nbsp;EntLibTeste&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;{&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af;"&gt;Program&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp; &amp;nbsp; {&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;void&lt;/span&gt;&amp;nbsp;Main(&lt;span style="color: blue;"&gt;string&lt;/span&gt;[] args)&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style="color: #2b91af;"&gt;LogEntry&lt;/span&gt;&amp;nbsp;logEntry =&amp;nbsp;&lt;span style="color: blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af;"&gt;LogEntry&lt;/span&gt;();&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; logEntry.Severity =&amp;nbsp;&lt;span style="color: #2b91af;"&gt;TraceEventType&lt;/span&gt;.Error;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; logEntry.ProcessName = &lt;span class="Apple-style-span" style="color: #990000;"&gt;"&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;umProcesso"&lt;/span&gt;;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; logEntry.Categories.Add(&lt;span style="color: #a31515;"&gt;"MyErro"&lt;/span&gt;);&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style="color: #2b91af;"&gt;Logger&lt;/span&gt;.Write(logEntry);&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp; &amp;nbsp; }&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;}&lt;/div&gt;&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Execute a classe e você deverá ver a mensagem esperada no arquivo de log assim como no Event Viewer, dentro de “Application Log”.&lt;/li&gt;
&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_lASvn9Zri4E/S74Oywfiz7I/AAAAAAAAAPI/jPcSioYu1_k/s1600/img4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_lASvn9Zri4E/S74Oywfiz7I/AAAAAAAAAPI/jPcSioYu1_k/s320/img4.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Para encontrar mais detalhes e outras informações sobre o Logging Application Block visite a página &lt;a href="http://msdn.microsoft.com/en-us/library/cc511708.aspx"&gt;MSDN Enterprise Library -&amp;nbsp;Logging&lt;/a&gt;&amp;nbsp;&amp;nbsp;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2611760040153227514-3010845265594858731?l=webzerocode.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/oJnUYAsk8azaiZHi_OwS1KVBFLc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oJnUYAsk8azaiZHi_OwS1KVBFLc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/oJnUYAsk8azaiZHi_OwS1KVBFLc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oJnUYAsk8azaiZHi_OwS1KVBFLc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Webzerocode/~4/ZkMMY7_MW9Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webzerocode.blogspot.com/feeds/3010845265594858731/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://webzerocode.blogspot.com/2010/04/log-com-net-enterprise-library.html#comment-form" title="1 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2611760040153227514/posts/default/3010845265594858731?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2611760040153227514/posts/default/3010845265594858731?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Webzerocode/~3/ZkMMY7_MW9Y/log-com-net-enterprise-library.html" title="Log com .NET Enterprise Library" /><author><name>marques.leo</name><uri>http://www.blogger.com/profile/07316575638351995540</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_lASvn9Zri4E/S73sUOfrxmI/AAAAAAAAAOw/DXNU7KioHwk/s72-c/img1.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://webzerocode.blogspot.com/2010/04/log-com-net-enterprise-library.html</feedburner:origLink></entry></feed>

