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:
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
Na barra de tarefas, clique em Gerenciador do Servidor.
No Gerenciador do Servidor, clique no menu Gerenciar e clique em Adicionar Funções e Recursos.
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.
Na página Funções de servidor, expanda Servidor Web (IIS) e, em seguida, selecione Servidor FTP.
Selecione Avançar e, em seguida, na página Selecionar recursos, selecione Avançar novamente.
Na página Confirmar seleções de instalação, clique em Instalar.
Na página Resultados , clique em Fechar.
Windows 8 ou Windows 8.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.
Em Painel de Controle, clique em Programas e Recursos e clique em Ativar ou desativar recursos do Windows.
Expanda Serviços de Informações da Internet e selecione Servidor FTP.
Clique em OK.
Clique em Fechar.
Windows Server 2008 R2
Na barra de tarefas, clique em Iniciar, vá para Ferramentas Administrativas e clique em Gerenciador do Servidor.
No painel de hierarquia do Gerenciador do Servidor, expanda Funções e clique em Servidor Web (IIS).
No painel Servidor Web (IIS), role até a seção Serviços de Função e clique em Adicionar Serviços de Função.
Na página Selecionar Serviços de Função do Assistente para Adicionar Serviços de Função, expanda Servidor FTP.
Selecione Serviço FTP.
Clique em Avançar.
Na página Confirmar Seleções de Instalação, clique em Instalar.
Na página Resultados , clique em Fechar.
Windows 7
Na barra de tarefas, clique em Iniciar e, depois, em Painel de Controle.
Em Painel de Controle, clique em Programas e Recursos e clique em Ativar ou desativar Recursos do Windows.
Expanda Serviços de Informações da Internet e, em seguida, Servidor FTP.
Selecione Serviço FTP.
Clique em OK.
Windows Server 2008 ou Windows Vista
Baixe o pacote de instalação do seguinte URL:
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
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).
No painel Conexões, expanda o nome do servidor e vá para o site onde deseja configurar o registro em log.
No painel Página Inicial, clique duas vezes em Registro em Log FTP.
- Na seção Substituição de Arquivo de Log, clique em Selecionar Campos W3C...
Selecione os campos para os seus arquivos de log e clique em OK.
Em Diretório, especifique o caminho onde o arquivo de log deve ser armazenado. O padrão é %SystemDrive%\inetpub\logs\LogFiles.
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).
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 .
|
||||||||||||||||||||||||||||||||||||||||||||
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 .
|
||||||||||||||||||||||||||||||||||||||||||||
selectiveLogging |
Atributo de sinalizadores opcionais. Especifica o detalhamento do registro em log FTP. O valor padrão é LogSuccessful,LogError,LogInfrastructure .
|
||||||||||||||||||||||||||||||||||||||||||||
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