2010-01-07 18 views
5

Estoy usando log4net y lo he configurado completamente con param name = "File" value = "C: \ Application.log". Sin embargo, el archivo no se crea en C :. Estoy ejecutando Windows 7 y tal vez algo así como los permisos impiden que se cree el archivo.¿Archivo de registro no creado?

Aquí es el app.config:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net" /> 
    </configSections>` 

    <log4net> 
    <root> 
     <level value="DEBUG" /> 
     <appender-ref ref="LogFileAppender" /> 
    </root> 
    <appender name="LogFileAppender“ type=“log4net.Appender.RollingFileAppender" > 
     <param name="File" value="C:\Users\Mohit\Documents\Application.log" /> 
     <param name="AppendToFile" value="true" /> 
     <rollingStyle value="Size" /> 
     <maxSizeRollBackups value="10" /> 
     <maximumFileSize value="10MB" /> 
     <staticLogFileName value="true" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <param name="ConversionPattern“ value=“%-5p%d{yyyy-MM-dd hh:mm:ss} – %m%n" /> 
     </layout> 
    </appender> 
    </log4net> 
</configuration> 

Respuesta

7

Debe proporcionar un nombre de archivo real. Lo que definió en su configuración es un nombre de carpeta. En lugar de:

<param name="File" value="C:\Users\Mohit\Documents" /> 

usar algo como:

<param name="File" value="C:\Users\Mohit\Documents\log.txt" /> 

Además, es probable que tengas permisos elevados para su aplicación a escribir el registro a la raíz c: carpeta. UAC no le permitirá escribir en la carpeta raíz.

Al igual que Andy dijo, podrás mejor elegir alguna subcarpeta de la carpeta Usuarios de Windows como:

c:\Users\Mohit\AppData\Local\<MyApplication> 

log4net tiene algunas variables predefinidas que puede utilizar para apuntar a carpetas especiales. Hay algunas preguntas acerca de que aquí en la SO:

How to specify common application data folder for log4net?

C# how to specify the appData file path in the app.config file

1

Sí, asegúrese de que el usuario que está ejecutando la aplicación tiene permisos de escritura en C :.

Mejor aún, es probable que no desee escribir el registro de la aplicación en el directorio raíz c: \. Probablemente sería mejor elegir una ubicación donde está instalada su aplicación, o en algún lugar en Documentos y configuraciones (o el equivalente de Windows 7).

+0

También asegúrese de que el appender esté especificado en el registrador. Es fácil de perder.Si está ejecutando la aplicación en el modo de depuración en VS, puede usar un apéndice de rastreo y la salida de registro aparecerá en la ventana de resultados, muy útil si Log4Net en sí dice algo. – Skurmedel

1

Mi problema era el orden de las secciones en mi archivo app.config. Tuve mi sección <startup> primero, luego mi <configSections>. Por alguna razón, no recibí un error en mi aplicación de Windows, pero me dio un error en una aplicación de consola. Al parecer <configSections> debe ser la primera sección bajo <configuration>

Así, en lugar de esto:

<configuration> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
    </startup> 
    <configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> 
    </configSections> 

hacer esto:

<configuration> 
    <configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> 
    </configSections> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
    </startup> 
0

Lo resuelto mi problema era básicamente what CTBrewski posted here (+1 btw!), pero mi App.config tenido una entrada appSettings no una entrada configSections.

I trasladó la entrada appsettings con mis entradas de configuración de log4net por encima de la entrada de inicio, y los registros se escriben en el perfil de usuario:

<configuration> 
    <appSettings> 
    <add key="log4net.Config" value="log4net.config" /> 
    <add key="log4net.Config.Watch" value="True" /> 
    <add key="ClientSettingsProvider.ServiceUri" value="" /> 
    </appSettings> 
    <startup> 
    <supportedRuntime version="v2.0.50727" /> 
    </startup> 
    ... 
    ... 

Y luego, por supuesto, mi appender se parece a esto:

<appender name="RollingFile" type="log4net.Appender.RollingFileAppender"> 
    <file value="${LOCALAPPDATA}/Synclio/Logs/SynclioWin.log" /> 
    <appendToFile value="true" /> 
    <maximumFileSize value="5000KB" /> 
    <maxSizeRollBackups value="2" /> 

    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%level %thread %logger - %message%newline" /> 
    </layout> 
    </appender> 
+0

Nice edit @Philipp, tendré que acordarme de usar los ayudantes del idioma ya que me encanta el color de la sintaxis. – jmort253

Cuestiones relacionadas