Habitualmente aplicacoes precisam salvar os erros que foram gerados, isso ajuda a encontrar a origem do erro. Dessa forma a solucao para o problema vem muito mais rapida. Esses erros salvos em arquivos sao chamados de Log.Em aplicacoes .NET temos diversas maneiras de implementar uma rotina de Log da aplicacao, existem frameworks proprias e voce tambem pode gerar sua propria rotina de Log. Uma maneira simples de fazer isso na sua aplicacao e usando o Log4Net, basta algumas configuracoes simples e esta pronto.Primeiro e preciso baixar o Log4Net e adicionar como referencia na sua aplicacao, clique aqui para efetuar o download da DLL. Crie um novo projeto ou use um que ja exista e adicione a referencia da DLL que acabou de baixar.Apos fazer isso, abra o Web.config e configure da tag configSections que sera usado o Log4Net. Se nao tiver a tag configSections e preciso criar:<configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> configSections>configuration>Ainda dentro do configuration e preciso adicionar as configuracoes de onde sera salvo o arquivo, o que sera salvo no arquivo (error, warning, debug e etc), vamos colocar a configuracao basica: <log4net> <appender name="RollingFile" type="log4net.Appender.RollingFileAppender"> <file value="Log\\MeuArquivo.log"/> <appendToFile value="true"/> <datePattern value="yyyy-MM-dd"/> <rollingStyle value="Composite"/> <maximumFileSize value="1MB"/> <maxSizeRollBackups value="50"/> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%newline[%-5level]%newline%message%newline"/> layout> appender> <logger name="LogInFile"> O nivel de log que sera incluido no appender --> <level value="All"/> <appender-ref ref="RollingFile"/> logger> log4net>Na tag maximumFileSize sera definido o tamanho que o arquivo deve atingir, quando ele chegar no tamanho maximo, sera criado um novo arquivo.Na tag appender podemos definir como vai ser salvo esse log. A framework da diversas opcoes para isso, podendo salvar em banco de dados como SQL Server, Oracle, DB2, SQLite e Microsoft Access, pode ser salvo em arquivo, email entre outras. Para informacoes de como implementar essas outras maneiras, acesse: http://logging.apache.org/log4net/release/config-examples.htmlPrecisamos colocar dentro do arquivo Global.asax, dentro do metodo Application Start que vamos usar a configuracao do Log4Net, logo ficara dessa forma: public class Global : System.Web.HttpApplication { void Application_Start(object sender, EventArgs e) { log4net.Config.XmlConfigurator.Configure(); } void Application_End(object sender, EventArgs e) {} void Application_Error(object sender, EventArgs e) {} void Session_Start(object sender, EventArgs e) {} void Session_End(object sender, EventArgs e) {} } Apos essa configuracao vamos exemplificar o uso, para isso vamos abrir a pagina padrao do nosso projeto e vamos implementar um metodo de exemplo para utilizacao do Log4Net. private log4net.ILog logger; protected void Page_Load(object sender, EventArgs e) { //Vamos usar o logger LogInFile, que salva todos os tipos de erro logger = log4net.LogManager.GetLogger("LogInFile"); logger.Debug("Lanca a mensagem no nivel de debug"); logger.Info("Lanca a mensagem de info"); logger.Error("Lanca a mensagem de error"); logger.Warn("Lanca a mensagem de warning"); }Ao executar o codigo, vamos ter o seguinte resultado:Dentro da configuracao no arquivo Web.config voce pode configurar que so sera salvo o que for lancado como erro, dessa forma: <logger name="LogInFile"> <level value="Error"/> <appender-ref ref="RollingFile"/> logger>Uma solucao simples, porem e muito importante saber qual informacao salvar para identificar o erro do usuario. Seria uma boa pratica criar uma classe para salvar informacoes nesse arquivo, temos diversas maneiras de pegar informacoes desse erro, e do status da aplicacao no momento que ocorreu