Existe um mundo inteiro de ferramentas feitas sob medida para vários departamentos governamentais e empresas privadas para lidar com coisas que o ESRI ArcMap não pode fazer.
Ou até mesmo coisas personalizadas do ArcGIS Server que você precisa criar e manter.
Como registrar facilmente todos os eventos desejados / indesejados em seu aplicativo?
Você pode usar o log4net.
Aqui estão as etapas:
- Crie um arquivo de configuração separado para log4.net;
- Crie um método ou classe para carregar o arquivo de configuração quando o aplicativo é inicializado. Faça isso dentro do método Startup de um IExtension personalizado, por exemplo;
- Faça login;
Aqui está um exemplo para uma extensão ArcMap Desktop
public void Startup(ref object initializationData)
{
ConfigureLogging();
_application = (IApplication)initializationData;
_logger = LogManager.GetLogger(typeof (CadastralExtension));
_logger.Info("".PadLeft(50, '-'));
_logger.Info("".PadLeft(50, '-'));
_logger.Info("".PadLeft(50, '-'));
_logger.Info("Inicializando extensão cadastral.");
_cadastralEventListener = new CadastralApplicationEventListener(_application);
_editor = ExtensionFinder.GetEditor();
}
// this is the importante function
private void ConfigureLogging()
{
var assemblyFile = new FileInfo(Assembly.GetExecutingAssembly().Location);
var logConfig = new FileInfo(Path.Combine(assemblyFile.DirectoryName, "log4net.config"));
XmlConfigurator.ConfigureAndWatch(new FileInfo(logConfig.FullName));
}
public void Shutdown()
{
_logger.Info("Finalizando a extensão cadastral");
_logger.Info("".PadLeft(50, '-'));
_logger.Info("".PadLeft(50, '-'));
_logger.Info("".PadLeft(50, '-'));
}
public string Name
{
get { return "jakovasaur"; }
}
}
Neste caso, o arquivo de configuração log4.net está localizado no mesmo diretório que meu assembly. Você precisará implantar o arquivo de configuração nesse mesmo diretório sempre que instalar sua extensão na máquina do usuário.
Configuração log4net de amostra:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" requirePermission="false" />
</configSections>
<log4net>
<appender name="LogFileAppender" type="MyNamespace.CwdRollingFileAppender, MyNamespace.GIS.ArcMapToolbar.Core">
<file value="logs.txt" />
<appendToFile value="true" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="1MB" />
<staticLogFileName value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline%exception" />
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="LogFileAppender" />
</root>
</log4net>
</configuration>