Necesito cambiar el nombre de la aplicación según la configuración que estoy usando en Visual Studio. Por ejemplo, si estoy en la configuración de depuración, quiero que el nombre de la aplicación se muestre como 'App_Debug' en el campo Aplicación en la tabla Elmah_Error. ¿Alguien tiene alguna experiencia con esto? ¿O hay otra forma de hacerlo?¿Hay alguna forma de establecer programáticamente el nombre de la aplicación en Elmah?
Respuesta
De manera predeterminada, Elmah utiliza el GUID de la aplicación de AppPool como nombre de aplicación predeterminado. Utiliza esto como la clave para identificar los errores en la tabla Elmah_Error cuando observa la interfaz web creada a través de su Módulo HTTP.
Me encargaron explorar esta opción para mi empresa a principios de este año. No pude encontrar una manera de manipular esto por defecto ya que Elmah saca el nombre de la aplicación de HttpRuntime.AppDomainAppId
en el archivo ErrorLog.cs. Podrías manipularlo con la tecla que desees; sin embargo, ese es el GUID de la AppPool.
Dicho esto, pude manipular el archivo ErrorLog.cs para convertir Elmah en un marco invocable en lugar de uno basado en el controlador y permitir que establezca ApplicationName. Lo que terminé haciendo fue modificando ErrorLog.cs para incluir una propiedad que me ha permitido establecer el nombre de la siguiente manera:
public virtual string ApplicationName
{
get
{
if (_applicationName == null) { _applicationName = HttpRuntime.AppDomainAppId; }
return _applicationName;
}
set { _applicationName = value; }
}
Lo que probablemente tendrá que hacer es ajustar esto de manera diferente y establecer el ApplicationName no HttpRuntime.AppDomainAppId
pero , en cambio, un valor extraído de web.config. En general, es posible. La forma en que lo hice mejoró el método ErrorLog.Log(ex)
por lo que podría usar Elmah tiene un marco invocable más allá de las aplicaciones web. Mirando hacia atrás, desearía haber hecho el enfoque de la aplicación/web.config en su lugar.
Una cosa a tener en cuenta al cambiar el nombre de la aplicación en Elmah. El controlador http que genera la interfaz /elmah/default.aspx ya no funcionará. Todavía estoy tratando de encontrar tiempo para dar la vuelta a tal; sin embargo, es posible que deba considerar la creación de una interfaz personalizada cuando se implementa.
Esto ahora se puede hacer simplemente en marcado. Simplemente agregue un atributo applicationName
al elemento errorLog
en la sección <elmah>
del archivo web.config. Ejemplo:
<errorLog type="Elmah.SqlErrorLog, Elmah"
connectionStringName="connectionString" applicationName="myApp" />
he probado esto y funciona tanto cuando se conecta una excepción y al ver el registro a través de Elmah.axd
.
En el caso de la OP, uno se imagina que se puede configurar mediante programación también, pero no he probado eso. Para mí, e imagino que para la mayoría de los escenarios, el enfoque de marcado es suficiente.
- 1. ¿Hay alguna manera de establecer programáticamente el ApartmentState en STA?
- 2. ¿Hay alguna forma de seleccionar un ancla segue programáticamente?
- 3. ¿Hay alguna forma de generar programáticamente bytecode de Python?
- 4. ¿Hay alguna forma de actualizar automáticamente la aplicación en Android?
- 5. ¿Cómo configuro ELMAH programáticamente?
- 6. ¿Hay alguna forma de establecer valores en LINQ?
- 7. ¿Hay alguna forma de pasar el iPhone?
- 8. ¿Hay alguna forma de cambiar el nombre de una aplicación ClickOnce desplegada?
- 9. ¿Hay alguna forma de cambiar el nombre del nombre de la cookie RequestVerificationToken?
- 10. ¿Hay alguna forma de establecer declarativamente la propiedad ServerCertificateValidationCallback de ServicePointManager desde el archivo * .config?
- 11. Nombre de aplicación ELMAH: mostrar excepciones registradas por otro sitio
- 12. ¿Hay alguna forma de leer programáticamente un archivo de un disco TrueCrypt en la memoria?
- 13. ¿Hay alguna forma de establecer el título de la página mediante enlace de datos utilizando Knockout.js?
- 14. ¿Hay alguna forma de establecer el valor predeterminado para la matriz de memoria compartida?
- 15. ¿Hay alguna forma de obtener el nombre de la unidad actual de un archivo de inclusión?
- 16. ¿Hay alguna forma de 'resaltar' el código?
- 17. ¿Hay alguna forma de establecer la alineación de texto de una columna completa en una tabla?
- 18. ¿Hay alguna forma de establecer el límite de facturación de Amazon AWS?
- 19. ¿Hay alguna manera de establecer parámetros de contexto programáticamente en embarcadero incrustado?
- 20. ¿Hay alguna forma de doblar el código manualmente en Eclipse?
- 21. ¿Hay alguna forma de modularizar una aplicación JavaFX?
- 22. ¿Hay alguna forma de establecer explícitamente el alcance de require_once() en global?
- 23. ¿Existe alguna forma inteligente de implementar mi aplicación Silverlight y cambiar la configuración programáticamente?
- 24. Aplicación de visor independiente para el registro de ELMAH
- 25. ¿Hay alguna forma de cancelar TabControl.Items.CurrentChanging?
- 26. ¿Hay alguna forma de establecer una variable de preprocesador para el valor de una propiedad?
- 27. Establecer APN programáticamente en Android
- 28. ¿Hay alguna forma de currying en C?
- 29. ¿Hay alguna forma de iniciar el proceso en estado suspendido?
- 30. ¿Hay alguna manera fácil de obtener programáticamente el alfabeto?
Bastante pequeña objeción, pero me gusta este patrón mejor: return _applicationName ?? (_applicationName = HttpRuntime.AppDomainAppId); –
En los procedimientos almacenados en la base de datos de Elmah hay filtros en el nombre de la aplicación. Cambié todos los procedimientos almacenados en mi entorno para ignorar este filtro y poder ver todos los errores en una sola consola. –