2009-06-08 22 views
15

estoy usando log4net y yo era para guardar el archivo de registro en el archivo de datos de programa para Win XP/Vista etc.C# cómo especificar la ruta del archivo appData en el archivo app.config

Ésta es mi app.config archivo hasta el momento, y he especificado el nombre softphone.log. Hoewver, no estoy seguro de cómo especificar la ruta completa al archivo ya que cada usuario tendrá una ruta diferente dependiendo de su nombre de usuario.

<log4net> 
    <logger name="default"> 
     <level value="DEBUG"/> 
    </logger> 
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value="softphone.log"/> 
     <appendToFile value="true"/> 
     <rollingStyle value="Size"/> 
     <maxSizeRollBackup value="10"/> 
     <maximumFileSize value="1MB"/> 
     <staticLogFileName value="true"/> 
     <layout type="log4net.Layout.PatternLayout"> 
     <param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/> 
     </layout> 
    </appender> 
    </log4net> 

En mi código fuente que pueda obtener la ruta de la siguiente manera:

System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) 

Sin embargo, no puedo usar lo anterior en mi app.config y si no modificable en el camino mi sistema la ruta sería:

C:\Documents and Settings\John\Application Data 

Sin embargo, esto sería diferente para cada cliente. Entonces, ¿hay alguna manera de hacer esto para el archivo app.config?

Muchas gracias por todas las sugerencias,

+0

posible duplicado de [¿Cómo especificar la carpeta de datos de aplicación común para log4net?] (Http://stackoverflow.com/questions/468989/how-to-specify-common-application-data-folder-for-log4net) –

Respuesta

17

No creo que se puede hacer lo que quiera, hay un método para áreas de análisis personalizada en el archivo app.config para que usted pueda añadir su propia señal de que podrías reemplazar con el valor correcto, pero no veo cómo funcionaría eso dentro de la sección log4net.

Sin embargo, todo lo que está configurado para log4net dentro de la configuración también se puede establecer en el código. Creo que la mejor opción sería establecer la propiedad para el appender en el código justo después del inicio de la aplicación.


Ahh, no importa, una búsqueda rápida ha revelado mi ignorancia. De here y here parece que algo similar a esto:

<file value="${APPDATA}\log-file.txt" /> 

hará lo que usted desea. No lo he probado yo mismo, así que también dejaré mi primera respuesta, pero me gustaría saber si tienes algo de suerte.

+1

Me alegro de que haya editado;) Siempre hay una manera de llegar a las variables de entorno de alguna manera. –

+0

Lo intentaré e informaré con mis resultados. Gracias. – ant2009

+0

Solo para decir que esto funciona bien para mí, solo lo he probado en XP en este momento, pero supongo que también funciona en Vista. –

Cuestiones relacionadas