son - La mejor ubicación para archivos de registro de excepción(Windows)
win log files borrar (7)
La pregunta a dónde deberían ir los registros de excepción se ha discutido aquí una o dos veces (o más), y una de las recomendaciones fue que la aplicación nunca debería escribir en la carpeta de instalación.
Sin embargo, si pongo los registros en algún lugar en% appdata%, esto significa que cada usuario tiene su propio conjunto de registros. Prefiero tener todos los registros en una sola ubicación.
En uno de los últimos problemas de mag MSDN, tener una subcarpeta separada para los registros en la carpeta de instalación (por ejemplo,% programfiles / myapp / logs) se llamó una excepción válida de la regla. Por supuesto, la ACL para esta carpeta debe configurarse en consecuencia.
¿Tener una carpeta de registro en la carpeta de instalación es una práctica común o un absoluto no-go? ¿Dónde colocas los registros de tus excepciones?
Editar:
De hecho, estamos usando log4net, por lo que la ubicación y el tipo de registro son completamente configurables. Sin embargo, quiero tener un valor predeterminado razonable. Prefiero tener un archivo sobre el registro de eventos. Para la mayoría de los usuarios, un archivo es mucho más fácil de manejar que el registro de eventos.
Sin embargo, supongamos que quiero tener archivos. ¿Está bien tener una carpeta de registro en la carpeta de instalación?
Con los nuevos OS Vista y Win 2008, escribir en el directorio de archivos del programa puede necesitar ACL o virtualizarse en la carpeta del usuario. Sugiero configurar un directorio en% AllUsersProfile%, de esta manera tiene una ubicación común para todos los archivos de registro del usuario y sus aplicaciones no necesitan ejecutarse como administrador para escribir allí.
Creo que debería preferir la carpeta AppData, pero si desea combinar todos los registros en una carpeta, utilice All Users Directory (Environment.SpecialFolder.CommonApplicationData) y cree subcarpetas dentro de la carpeta de la aplicación para cada usuario. De esta manera, no solo se deshace de los problemas de permisos, sino que también evita saturar su propio espacio :) EN MI NOMBRE.
Deberá tener cuidado con los permisos para escribir en la carpeta de registro.
Esta es una de las razones principales para usar la carpeta de datos de la aplicación en lugar de la carpeta de instalación, porque en Vista y en adelante, de manera predeterminada, probablemente no tendrá acceso para escribir en la carpeta de instalación.
Depende principalmente de la aplicación, por lo que creo que hay tantas respuestas posibles.
Para los sitios web, tendría un "C: / log" en el servidor, luego "C: / log / website" para sitios web individuales y el uso de Log4Net o similar.
Para servicios web, servicios de ventana, trabajos programados, etc., escribiría en el Registro de eventos de Windows. Mi PC -> Administrar -> Herramientas del sistema -> Vista de evento -> (Mi servicio)
Para una aplicación de Windows que se implementa en un entorno que controlo (es decir, la aplicación interna de la compañía), lo enviaré por correo electrónico a los informes de excepción del "equipo de TI".
Para una aplicación de Windows que se distribuye a usuarios desconocidos. Hacer nada.
Para Windows, use el registro de eventos. Es bastante fácil crear su propio registro o simplemente puede agregar sus mensajes a uno de los estándares.
Esto tiene el beneficio de que casi todos los técnicos (y programadores) del planeta esperan que algo aparezca en el registro de eventos cuando las cosas no van bien.
Para iniciar sesión en un archivo común sin ACL especiales, use algo como
string saveFolder = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + @"/MyCompany";
que hace referencia a la carpeta en
C:/Documents and Settings/All Users/Application Data/MyCompany
en XP, y algo así como
C:/ProgramData/MyCompany
bajo Vista. Deberá verificar que la carpeta exista en algún momento, tal vez al inicio de la aplicación.
Si no puede o no va a utilizar los registros de eventos, entonces realmente no hay ninguna estandarización sobre dónde colocar el archivo de registro. Solo necesita asegurarse de que la ubicación esté bien documentada y que realmente exista lógica en su código para asegurarse de que exista un límite en el tamaño del archivo de registro.