Compartilhar via


Arquivos de log FTP <logFile>

Visão geral

O elemento <logFile> é usado para configurar as opções de registro em log de atividades para um site FTP.

Por exemplo, você pode habilitar ou desabilitar o registro em log, especificar as categorias de informações a serem armazenadas no arquivo de log e alterar o diretório em que o arquivo de log está armazenado. Você também pode usar o elemento <logFile> para controlar a frequência com que o IIS cria um novo arquivo de log com base no tamanho do arquivo de log ou no intervalo de tempo e no tamanho máximo (em bytes) que um arquivo de log pode obter.

Observação

Ao contrário dos sites que podem usar o formato IIS, NCSA ou W3C para arquivos de log, o serviço FTP 7 armazena apenas arquivos de log no formato W3C.

Você pode definir as categorias de informações que o IIS registra editando o atributo logExtFileFlags. Os valores padrão são Date, Time, ClientIP, UserName, ServerIP, Method, UriStem, FtpStatus, Win32Status, FtpSubStatus, ServerPort, Session e FullPath.

Compatibilidade

Versão Observações
IIS 10.0 O elemento <logFile> não foi modificado no IIS 10.0.
IIS 8.5 O elemento <logFile> não foi modificado no IIS 8.5.
IIS 8.0 O elemento <logFile> não foi modificado no IIS 8.0.
IIS 7.5 O elemento <logFile> do elemento <ftpServer> é fornecido como um recurso do IIS 7.5.
IIS 7.0 O elemento <logFile> do elemento <ftpServer> foi introduzido no FTP 7.0, que era um download separado para o IIS 7.0.
IIS 6,0 N/D

Observação

Os serviços FTP 7.0 e FTP 7.5 eram fornecidos fora de banda para o IIS 7.0, o que exigia o download e a instalação de módulos do seguinte URL:

https://www.iis.net/expand/FTP

Com o Windows 7 e o Windows Server 2008 R2, o serviço FTP 7.5 é fornecido como um recurso para o IIS 7.5 e, portanto, o download do serviço FTP não é mais necessário.

Instalação

Para dar suporte à publicação FTP para seu servidor Web, você deve instalar o serviço FTP. Para fazer isso, execute as etapas a seguir.

Windows Server 2012 R2 ou Windows Server 2012

  1. Na barra de tarefas, clique em Gerenciador do Servidor.

  2. No Gerenciador do Servidor, clique no menu Gerenciar e clique em Adicionar Funções e Recursos.

  3. No assistente Adicionar Funções e Recursos, clique em Avançar. Selecione o tipo de instalação e clique em Avançar. Selecione o servidor de destino e clique em Avançar.

  4. Na página Funções de servidor, expanda Servidor Web (IIS) e, em seguida, selecione Servidor FTP.

    Observação

    Para dar suporte à autenticação do ASP.Membership ou do Gerenciador do IIS para o serviço FTP, você precisará selecionar a Extensibilidade de FTP além do Serviço FTP.
    Screenshot of the F T P Extensibility option being highlighted. .

  5. Selecione Avançar e, em seguida, na página Selecionar recursos, selecione Avançar novamente.

  6. Na página Confirmar seleções de instalação, clique em Instalar.

  7. Na página Resultados , clique em Fechar.

Windows 8 ou Windows 8.1

  1. Na tela Iniciar, mova o ponteiro até o canto inferior esquerdo, clique com o botão direito do mouse no botão Iniciar e clique em Painel de Controle.

  2. Em Painel de Controle, clique em Programas e Recursos e clique em Ativar ou desativar recursos do Windows.

  3. Expanda Serviços de Informações da Internet e selecione Servidor FTP.

    Observação

    Para dar suporte à autenticação do ASP.Membership ou do Gerenciador do IIS para o serviço FTP, você também precisará selecionar Extensibilidade de FTP.
    Screenshot of the F T P Extensibility folder being highlighted.

  4. Clique em OK.

  5. Clique em Fechar.

Windows Server 2008 R2

  1. Na barra de tarefas, clique em Iniciar, vá para Ferramentas Administrativas e clique em Gerenciador do Servidor.

  2. No painel de hierarquia do Gerenciador do Servidor, expanda Funções e clique em Servidor Web (IIS).

  3. No painel Servidor Web (IIS), role até a seção Serviços de Função e clique em Adicionar Serviços de Função.

  4. Na página Selecionar Serviços de Função do Assistente para Adicionar Serviços de Função, expanda Servidor FTP.

  5. Selecione Serviço FTP.

    Observação

    Para dar suporte à autenticação do ASP.Membership ou do Gerenciador do IIS para o serviço FTP, você também precisará selecionar Extensibilidade de FTP.
    Screenshot of the F T P Service option being highlighted.

  6. Clique em Avançar.

  7. Na página Confirmar Seleções de Instalação, clique em Instalar.

  8. Na página Resultados , clique em Fechar.

Windows 7

  1. Na barra de tarefas, clique em Iniciar e, depois, em Painel de Controle.

  2. Em Painel de Controle, clique em Programas e Recursos e clique em Ativar ou desativar Recursos do Windows.

  3. Expanda Serviços de Informações da Internet e, em seguida, Servidor FTP.

  4. Selecione Serviço FTP.

    Observação

    Para dar suporte à autenticação do ASP.Membership ou do Gerenciador do IIS para o serviço FTP, você também precisará selecionar Extensibilidade de FTP.
    Screenshot of the Internet Information Services folder's sub folders.

  5. Clique em OK.

Windows Server 2008 ou Windows Vista

  1. Baixe o pacote de instalação do seguinte URL:

  2. Siga as instruções no seguinte passo a passo para instalar o serviço FTP:

Instruções

Como configurar opções de log para um site FTP

  1. Abra o Gerenciador dos Serviços de Informações da Internet (IIS):

    • Caso você esteja usando o Windows Server 2012 ou o Windows Server 2012 R2:

      • Na barra de tarefas, clique em Gerenciador do Servidor, em Ferramentas e em Gerenciador dos Serviços de Informações da Internet (IIS).
    • Se você estiver usando o Windows 8 ou Windows 8.1:

      • Mantenha pressionada a tecla Windows, pressione a letra X e clique em Painel de Controle.
      • Clique em Ferramentas Administrativas e clique duas vezes em Gerenciador dos Serviços de Informações da Internet (IIS).
    • Caso você esteja usando o Windows Server 2008 ou o Windows Server 2008 R2:

      • Na barra de tarefas, clique em Iniciar, vá para Ferramentas Administrativas e clique em Gerenciador dos Serviços de Informações da Internet (IIS).
    • Se você estiver usando o Windows Vista ou Windows 7:

      • Na barra de tarefas, clique em Iniciar e, depois, em Painel de Controle.
      • Clique duas vezes em Ferramentas Administrativas e clique duas vezes em Gerenciador dos Serviços de Informações da Internet (IIS).
  2. No painel Conexões, expanda o nome do servidor e vá para o site onde deseja configurar o registro em log.

  3. No painel Página Inicial, clique duas vezes em Registro em Log FTP.
    Screenshot of the Home pane with the F T P Logging option being highlighted. - Na seção Substituição de Arquivo de Log, clique em Selecionar Campos W3C...

  4. Selecione os campos para os seus arquivos de log e clique em OK.
    Screenshot of the W 3 C Logging Fields dialog box, showing multiple fields to select.

  5. Em Diretório, especifique o caminho onde o arquivo de log deve ser armazenado. O padrão é %SystemDrive%\inetpub\logs\LogFiles.

  6. Na seção Substituição de Arquivo de Log, especifique as seguintes opções:

    • Agendar: para criar um novo arquivo de log baseado em um dos seguintes valores:

      • Por hora: um novo arquivo de log é criado a cada hora.
      • Por dia: um novo arquivo de log é criado a cada dia.
      • Por semana: um novo arquivo de log é criado a cada semana.
      • Por mês: um novo arquivo de log é criado a cada mês.
    • Tamanho máximo de arquivo (em bytes): para criar um novo arquivo de log quando o arquivo atingir um determinado tamanho (em bytes). O tamanho mínimo do arquivo é 1048576 bytes. Se esse atributo for definido como um valor menor que 1048576 bytes, o valor padrão será implicitamente considerado como 1048576 bytes.

    • Não criar um novo arquivo de log: há um único arquivo de log que continuará a crescer, conforme a informações são registradas.

    • Selecione Usar hora local para nomeação de arquivo e sobreposição para especificar que a nomeação do arquivo de log e hora da sobreposição do arquivo usa a hora do servidor local. Quando não selecionado, é usado o UTC (Tempo Universal Coordenado).
      Screenshot of the Log File Rollover section, showing the Schedule and Maximum file size options.

  7. Clique em Aplicar no painel Ações.

Configuração

Atributos

Atributo Descrição
directory Atributo de cadeia de caracteres opcional.

Especifica o diretório de registro em log, no qual o arquivo de log e os arquivos de suporte relacionados ao registro em log são armazenados.

O valor padrão é %SystemDrive%\inetpub\logs\LogFiles.
enabled Atributo booliano opcional.

true se o registro em log estiver habilitado; caso contrário, false.

O valor padrão é true.
localTimeRollover Atributo booliano opcional.

true se um novo arquivo de log for criado com base na hora local; caso contrário, false para UTC (Tempo Universal Coordenado), que anteriormente era chamado de GMT (Horário do Meridiano de Greenwich).

Observação: independentemente da configuração, o carimbo de data/hora de cada registro de log estendido do W3C é baseado em UTC.

O valor padrão é false.
logExtFileFlags Atributo de sinalizadores opcionais.

Especifica as categorias de informações que são gravadas no arquivo de log (quando você usa o formato de arquivo de log estendido W3C) ou para a fonte de dados ODBC durante eventos de registro em log para um site. O atributo logExtFileFlags pode ser um ou mais dos valores a seguir. Se você especificar mais de um valor, separe-os com uma vírgula (,).

Os valores padrão são Date, Time, ClientIP, UserName, ServerIP, Method, UriStem, FtpStatus, Win32Status, FtpSubStatus, ServerPort, Session e FullPath.
Valor Descrição
BytesRecv Registra o número de bytes que o servidor recebeu.

O valor numérico é 8192.
BytesSent Registre o número de bytes que o servidor enviou.

O valor numérico é 4096.
ClientIP Registre o endereço IP do cliente que fez a solicitação.

O valor numérico é 4.
ClientPort Registre a porta do cliente que fez a solicitação.

O valor numérico é 33554432.
ComputerName Registre o nome do servidor no qual a entrada do arquivo de log foi gerada.

O valor numérico é 32.
Date Registre a data em que a atividade ocorreu.

O valor numérico é 1.
FtpStatus Registre o código de status FTP em log.

O valor numérico é 1024.
FtpSubStatus Registre o código de sub-status do erro FTP.

O valor numérico é 2097152.
FullPath Registre o caminho relativo completo. Observação: isso pode ser diferente do URI solicitado pelo cliente, que é registrado definindo o sinalizador UriStem.

O valor numérico é 8388608.
Host Registre o nome do host virtual em log, se houver um.

O valor numérico é 1048576.
Info Registrar informações de depuração estendidas em log, se houver alguma.

O valor numérico é 16777216.
Method Registre a ação solicitada. Por exemplo, USER, PASS etc.

O valor numérico é 128.
ServerIP Registre o endereço IP do servidor no qual a entrada do arquivo de log foi gerada.

O valor numérico é 64.
ServerPort Registre o número da porta do servidor que está configurado para o site.

O valor numérico é 32768.
Session Registre o identificador exclusivo para a sessão FTP. Isso é útil para analisar a atividade de sessão em seus logs.

O valor numérico é 4194304.
SiteName Registre o nome do serviço de Internet e o número da instância do site.

O valor numérico é 16.
Time Registre a hora, em UTC (Tempo Universal Coordenado), na qual atividade ocorreu.

O valor numérico é 2.
TimeTaken Registre o tempo necessário para que uma solicitação seja concluída. O tempo gasto é registrado em milissegundos.

O valor numérico é 16384.
UriStem Registre as informações de tronco do URI (Identificador de Recurso Universal), que é o destino da ação. Observação: isso mostra o tronco de URI exatamente como o cliente solicitou, que pode não ser o caminho relativo completo. Para o caminho relativo completo, use o sinalizador FullPath.

O valor numérico é 256.
UserName Registre o nome do usuário autenticado que acessou seu servidor. Os usuários anônimos são indicados por um hífen.

O valor numérico é 8.
Win32Status Registre o código de status do Windows.

O valor numérico é 2048.
period Atributo de enumeração opcional.

Especifica com que frequência o serviço FTP cria um novo arquivo de log. O atributo period pode ser um dos valores possíveis a seguir.

O valor padrão é Daily.
Valor Descrição
Daily Crie um novo arquivo de log diariamente.

O valor numérico é 1.
Hourly Crie um novo arquivo de log por hora.

O valor numérico é 4.
MaxSize Crie um novo arquivo de log quando um tamanho máximo for atingido. O tamanho máximo é especificado no atributo truncateSize.

O valor numérico é 0.
Monthly Crie um novo arquivo de log mensalmente.

O valor numérico é 3.
Weekly Crie um novo arquivo de log semanalmente.

O valor numérico é 2.
selectiveLogging Atributo de sinalizadores opcionais.

Especifica o detalhamento do registro em log FTP.

O valor padrão é LogSuccessful,LogError,LogInfrastructure.
Valor Descrição
LogError Especifica que os erros serão registrados em log. A quantidade de dados realmente registrados também depende da configuração do sinalizador LogInfrastructure.

O valor numérico é 2.
LogInfrastructure Especifica que todos os comandos FTP e atividade de canal de dados de baixo nível serão registrados. Por exemplo, os logs conterão entradas para DataChannelOpened, DataChannelClosed, PORT/EPRT e PASV/EPSV se o sinalizador LogInfrastructure for definido.

O valor numérico é 4.
LogSuccessful Especifica que a atividade bem-sucedida será registrada. A quantidade de dados realmente registrados também depende da configuração do sinalizador LogInfrastructure.

O valor numérico é 1.
truncateSize Atributo int64 opcional.

Especifica o tamanho máximo do arquivo de log (em bytes) após o qual um novo arquivo de log será criado. Esse valor só é aplicável quando MaxSize é escolhido para o atributo period. O tamanho mínimo do arquivo é 1,048,576 bytes. Se esse atributo for definido como um valor menor que 1,048,576 bytes, o valor padrão será implicitamente considerado como 1,048,576 bytes.

O valor padrão é 20971520.

Elementos filho

Nenhum.

Exemplo de configuração

O exemplo de configuração a seguir mostra um FTP com opções de registro em log personalizadas que especificam que os comandos de infraestrutura não serão registrados, os arquivos de log serão girados diariamente e a opção de depuração adicional foi adicionada aos campos padrão.

<site name="ftp.example.com" id="5">
   <application path="/">
      <virtualDirectory path="/" physicalPath="c:\inetpub\www.example.com" />
   </application>
   <bindings>
      <binding protocol="ftp" bindingInformation="*:21:" />
   </bindings>
   <ftpServer serverAutoStart="true">
      <security>
          <authentication>
            <basicAuthentication enabled="true" />
            <anonymousAuthentication enabled="false" />
          </authentication>
      </security>
      <logFile period="Daily"
         logExtFileFlags="Date, Time, ClientIP, UserName, ServerIP, Method, UriStem, FtpStatus, Win32Status, ServerPort, FtpSubStatus, Session, FullPath, Info"
         selectiveLogging="LogSuccessful, LogError" />
   </ftpServer>
</site>

Exemplo de código

Os exemplos a seguir ilustram a habilitação do registro em log para um site FTP, a configuração do diretório de arquivos de log para um site FTP para um caminho específico e a especificação da reciclagem diária de arquivos de log.

AppCmd.exe

appcmd.exe set config -section:system.applicationHost/sites /[name='ftp.example.com'].ftpServer.logFile.directory:"C:\logs\LogFiles" /commit:apphost

appcmd.exe set config -section:system.applicationHost/sites /[name='ftp.example.com'].ftpServer.logFile.period:"Daily" /commit:apphost

appcmd.exe set config -section:system.applicationHost/sites /[name='ftp.example.com'].ftpServer.logFile.enabled:"True" /commit:apphost

Observação

Defina o parâmetro commit para apphost quando usar AppCmd.exe para definir essas configurações. Isso confirma as definições de configuração para a seção de local apropriado no arquivo ApplicationHost.config.

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetApplicationHostConfiguration();
         ConfigurationSection sitesSection = config.GetSection("system.applicationHost/sites");
         ConfigurationElementCollection sitesCollection = sitesSection.GetCollection();

         ConfigurationElement siteElement = FindElement(sitesCollection, "site", "name", @"ftp.example.com");
         if (siteElement == null) throw new InvalidOperationException("Element not found!");

         ConfigurationElement ftpServerElement = siteElement.GetChildElement("ftpServer");
         ConfigurationElement logFileElement = ftpServerElement.GetChildElement("logFile");
         logFileElement["directory"] = @"C:\logs\LogFiles";
         logFileElement["period"] = @"Daily";
         logFileElement["enabled"] = true;

         serverManager.CommitChanges();
      }
   }

   private static ConfigurationElement FindElement(ConfigurationElementCollection collection, string elementTagName, params string[] keyValues)
   {
      foreach (ConfigurationElement element in collection)
      {
         if (String.Equals(element.ElementTagName, elementTagName, StringComparison.OrdinalIgnoreCase))
         {
            bool matches = true;
            for (int i = 0; i < keyValues.Length; i += 2)
            {
               object o = element.GetAttributeValue(keyValues[i]);
               string value = null;
               if (o != null)
               {
                  value = o.ToString();
               }
               if (!String.Equals(value, keyValues[i + 1], StringComparison.OrdinalIgnoreCase))
               {
                  matches = false;
                  break;
               }
            }
            if (matches)
            {
               return element;
            }
         }
      }
      return null;
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample
   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration
      Dim sitesSection As ConfigurationSection = config.GetSection("system.applicationHost/sites")
      Dim sitesCollection As ConfigurationElementCollection = sitesSection.GetCollection
      Dim siteElement As ConfigurationElement = FindElement(sitesCollection, "site", "name", "ftp.example.com")

      If (siteElement Is Nothing) Then
         Throw New InvalidOperationException("Element not found!")
      End If

      Dim ftpServerElement As ConfigurationElement = siteElement.GetChildElement("ftpServer")
      Dim logFileElement As ConfigurationElement = ftpServerElement.GetChildElement("logFile")
      logFileElement("directory") = "C:\logs\LogFiles"
      logFileElement("period") = "Daily"
      logFileElement("enabled") = True

      serverManager.CommitChanges()
   End Sub

   Private Function FindElement(ByVal collection As ConfigurationElementCollection, ByVal elementTagName As String, ByVal ParamArray keyValues() As String) As ConfigurationElement
      For Each element As ConfigurationElement In collection
         If String.Equals(element.ElementTagName, elementTagName, StringComparison.OrdinalIgnoreCase) Then
            Dim matches As Boolean = True
            Dim i As Integer
            For i = 0 To keyValues.Length - 1 Step 2
               Dim o As Object = element.GetAttributeValue(keyValues(i))
               Dim value As String = Nothing
               If (Not (o) Is Nothing) Then
                  value = o.ToString
               End If
               If Not String.Equals(value, keyValues((i + 1)), StringComparison.OrdinalIgnoreCase) Then
                  matches = False
                  Exit For
               End If
            Next
            If matches Then
               Return element
            End If
         End If
      Next
      Return Nothing
   End Function


End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var sitesSection = adminManager.GetAdminSection("system.applicationHost/sites", "MACHINE/WEBROOT/APPHOST");
var sitesCollection = sitesSection.Collection;
var siteElementPos = FindElement(sitesCollection, "site", ["name", "ftp.example.com"]);

if (siteElementPos == -1) throw "Element not found!";
var siteElement = sitesCollection.Item(siteElementPos);

var ftpServerElement = siteElement.ChildElements.Item("ftpServer");
var logFileElement = ftpServerElement.ChildElements.Item("logFile");
logFileElement.Properties.Item("directory").Value = "C:\\logs\\LogFiles";
logFileElement.Properties.Item("period").Value = "Daily";
logFileElement.Properties.Item("enabled").Value = true;

adminManager.CommitChanges();

function FindElement(collection, elementTagName, valuesToMatch) {
   for (var i = 0; i < collection.Count; i++) {
      var element = collection.Item(i);
      if (element.Name == elementTagName) {
         var matches = true;
         for (var iVal = 0; iVal < valuesToMatch.length; iVal += 2) {
            var property = element.GetPropertyByName(valuesToMatch[iVal]);
            var value = property.Value;
            if (value != null) {
               value = value.toString();
            }
            if (value != valuesToMatch[iVal + 1]) {
               matches = false;
               break;
            }
         }
         if (matches) {
            return i;
         }
      }
   }
   return -1;
}

VBScript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"

Set sitesSection = adminManager.GetAdminSection("system.applicationHost/sites", "MACHINE/WEBROOT/APPHOST")
Set sitesCollection = sitesSection.Collection
siteElementPos = FindElement(sitesCollection, "site", Array("name", "ftp.example.com"))

If siteElementPos = -1 Then
Wscript.Echo "Element not found!"
WScript.Quit
End If

Set siteElement = sitesCollection.Item(siteElementPos)
Set ftpServerElement = siteElement.ChildElements.Item("ftpServer")
Set logFileElement = ftpServerElement.ChildElements.Item("logFile")
logFileElement.Properties.Item("directory").Value = "C:\logs\LogFiles"
logFileElement.Properties.Item("period").Value = "Daily"
logFileElement.Properties.Item("enabled").Value = true

adminManager.CommitChanges()

Function FindElement(collection, elementTagName, valuesToMatch)
   For i = 0 To CInt(collection.Count) - 1
      Set element = collection.Item(i)
      If element.Name = elementTagName Then
         matches = True
         For iVal = 0 To UBound(valuesToMatch) Step 2
            Set property = element.GetPropertyByName(valuesToMatch(iVal))
            value = property.Value
            If Not IsNull(value) Then
               value = CStr(value)
            End If
            If Not value = CStr(valuesToMatch(iVal + 1)) Then
               matches = False
               Exit For
            End If
         Next
         If matches Then
            Exit For
         End If
      End If
   Next
   If matches Then
      FindElement = i
   Else
      FindElement = -1
   End If
End Function