Partilhar via


Redirecionamento e criação de log do IIS

Observação

Esta não é a versão mais recente deste artigo. Para informações sobre a versão vigente, confira a Versão do .NET 8 deste artigo.

Aviso

Esta versão do ASP.NET Core não tem mais suporte. Para obter mais informações, confira .NET e a Política de Suporte do .NET Core. Para informações sobre a versão vigente, confira a Versão do .NET 8 deste artigo.

Importante

Essas informações relacionam-se ao produto de pré-lançamento, que poderá ser substancialmente modificado antes do lançamento comercial. A Microsoft não oferece nenhuma garantia, explícita ou implícita, quanto às informações fornecidas aqui.

Para informações sobre a versão vigente, confira a Versão do .NET 8 deste artigo.

O Módulo do ASP.NET Core redireciona as saídas de console stdout e stderr para o disco se os atributos stdoutLogEnabled e stdoutLogFile do elemento aspNetCore forem definidos. Todas as pastas no caminho stdoutLogFile são criadas pelo módulo quando o arquivo de log é criado. O pool de aplicativos deve ter acesso de gravação ao local em que os logs foram gravados (use IIS AppPool\{APP POOL NAME} para fornecer permissão de gravação, onde o espaço reservado {APP POOL NAME} é o nome do pool de aplicativos).

Logs não sofrem rotação, a menos que ocorra a reciclagem/reinicialização do processo. É responsabilidade do hoster limitar o espaço em disco consumido pelos logs.

O uso do log stdout só é recomendado para solucionar problemas de inicialização de aplicativo ao hospedar no IIS ou ao usar o suporte em tempo de desenvolvimento para o IIS com o Visual Studio, não durante a depuração local e a execução do aplicativo com IIS Express.

Não use o log de stdout para fins gerais de registro em log do aplicativo. Para registro em log de rotina em um aplicativo ASP.NET Core, use uma biblioteca de registro em log que limita o tamanho do arquivo de log e realiza a rotação de logs. Para obter mais informações, veja provedores de log de terceiros.

Uma extensão de arquivo e um carimbo de data/hora são adicionados automaticamente quando o arquivo de log é criado. O nome do arquivo de log é composto por meio do acréscimo do carimbo de data/hora, da ID do processo e da extensão de arquivo (.log) para o último segmento do caminho stdoutLogFile (normalmente stdout), delimitados por sublinhados. Se o caminho stdoutLogFile termina com stdout, um log para um aplicativo com um PID de 1934, criado em 5/2/2018 às 19:42:32, tem o nome de arquivo stdout_20180205194132_1934.log.

Se stdoutLogEnabled for falso, os erros que ocorrerem na inicialização do aplicativo serão capturados e emitidos no log de eventos até 30 KB. Após a inicialização, todos os logs adicionais são descartados.

O elemento de exemplo aspNetCore a seguir configura o registro em log stdout no caminho relativo .\log\. Confirme se a identity do usuário do pool de aplicativos tem permissão para gravar no caminho fornecido.

<aspNetCore processPath="dotnet"
    arguments=".\MyApp.dll"
    stdoutLogEnabled="true"
    stdoutLogFile=".\logs\stdout"
    hostingModel="inprocess">
</aspNetCore>

Ao publicar um aplicativo para implantação do Serviço de Aplicativo do Azure, o SDK da Web define o valor stdoutLogFile como \\?\%home%\LogFiles\stdout. A variável de ambiente %home é predefinida para aplicativos hospedados pelo Serviço de Aplicativo do Azure.

Para criar regras de filtro de log, confira a seção Aplicar regras de filtro de log no código da documentação de registro em log do ASP.NET Core.

Para obter mais informações sobre formatos de caminho, confira Formatos de caminho de arquivo em sistemas Windows.

Logs de diagnóstico avançados

O Módulo do ASP.NET Core é configurável para fornecer logs de diagnóstico avançados. Adicione a <handlerSettings> elemento para o <aspNetCore> elemento no web.config. A definição de debugLevel como TRACE expõe uma fidelidade maior de informações de diagnóstico:

<aspNetCore processPath="dotnet"
    arguments=".\MyApp.dll"
    stdoutLogEnabled="false"
    stdoutLogFile="\\?\%home%\LogFiles\stdout"
    hostingModel="inprocess">
  <handlerSettings>
    <handlerSetting name="debugFile" value=".\logs\aspnetcore-debug.log" />
    <handlerSetting name="debugLevel" value="FILE,TRACE" />
  </handlerSettings>
</aspNetCore>

Todas as pastas no caminho (logs no exemplo anterior) são criadas pelo módulo quando o arquivo de log é criado. O pool de aplicativos deve ter acesso de gravação ao local em que os logs foram gravados (use IIS AppPool\{APP POOL NAME} para fornecer permissão de gravação, onde o espaço reservado {APP POOL NAME} é o nome do pool de aplicativos).

Os valores do nível de depuração (debugLevel) podem incluir o nível e a localização.

Níveis (na ordem do menos para o mais detalhado):

  • ERROR
  • WARNING
  • INFO
  • RASTREAMENTO

Locais (vários locais são permitidos):

  • CONSOLE
  • EVENTLOG
  • FILE

As configurações do manipulador também podem ser fornecidas por meio de variáveis de ambiente:

  • ASPNETCORE_MODULE_DEBUG_FILE: caminho para o arquivo de log de depuração. (padrão: aspnetcore-debug.log)
  • ASPNETCORE_MODULE_DEBUG: configuração do nível de depuração.

Aviso

Não deixe o log de depuração habilitado na implantação por mais tempo que o necessário para solucionar um problema. O tamanho do log não é limitado. Deixar o log de depuração habilitado pode esgotar o espaço em disco disponível e causar falha no servidor ou no serviço de aplicativo.

Confira Configuração do módulo ASP.NET Core com web.config para obter um exemplo do elemento aspNetCore no arquivo web.config.