¿Hay alguna forma de configurar mediante programación el nombre de la aplicación en Elmah?

StackOverflow https://stackoverflow.com/questions/153054

  •  03-07-2019
  •  | 
  •  

Pregunta

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?

¿Fue útil?

Solución

Por defecto, Elmah usa el GUID de la aplicación de AppPool como el nombre predeterminado de la aplicación. Utiliza esto como la clave para identificar los errores en la tabla Elmah_Error cuando observa la interfaz web que se crea 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 de forma predeterminada ya que Elmah extrae el nombre de la aplicación de HttpRuntime.AppDomainAppId en el archivo ErrorLog.cs. Podrías manipularlo con cualquier tecla que quieras; sin embargo, ese es el GUID de AppPool.

Dicho esto, pude manipular el archivo ErrorLog.cs para convertir a Elmah en un marco invocable en lugar de un controlador basado y permitirme establecer el Nombre de la aplicación. Lo que terminé haciendo fue modificar ErrorLog.cs para incluir una propiedad que me permitiera 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 deba hacer es ajustar esto de manera diferente y establecer ApplicationName no en ErrorLog.Log(ex) sino, en cambio, en un valor extraído de web.config. Con todo, es posible. La forma en que lo hice mejoró el método <=> para poder usar Elmah tiene un marco invocable más allá de las aplicaciones web. Mirando hacia atrás, desearía haber hecho el enfoque app / web.config.

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 vueltas alrededor de tal; sin embargo, es posible que deba considerar la creación de una interfaz personalizada al implementar.

Otros consejos

Esto ahora se puede hacer únicamente 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 al registrar una excepción como al visualizar el registro a través de Elmah.axd.

En el caso del OP, uno podría imaginar que también se puede configurar mediante programación, pero no lo probé. Para mí y me imagino que para la mayoría de los escenarios, el enfoque de marcado es suficiente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top