2010-05-12 22 views
56

Cuando establezco el valor del archivo en logs\log-file.txt, ¿dónde exactamente creará esta carpeta? En el directorio /bin?¿Dónde creará log4net este archivo de registro?

Mi web.config se ve así:

<log4net> 
    <appender name="FileAppender" type="log4net.Appender.FileAppender"> 
     <file value="logs\log-file.txt" /> 
     <appendToFile value="true" /> 
     <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> 
     </layout> 
    </appender> 
</log4net> 

¿Es esta la forma correcta para iniciar la sesión:

ILog logger = LogManager.GetLogger(typeof(CCController)); 
logger.Error("Some Page", ex); // where ex is the exception instance 
+0

¿Puede aceptar una de las respuestas como correcta? Gracias –

Respuesta

18

El valor de archivos puede ser o bien una ruta absoluta como "c: \ logs \ log.txt "o una ruta relativa que creo que es relativa al directorio bin.

En cuanto a su aplicación, por lo general coloque lo siguiente en la parte superior de cualquier clase que planeo iniciar sesión:

private static readonly ILog Log = LogManager.GetLogger( 
MethodBase.GetCurrentMethod().DeclaringType); 

Por último, se puede usar como tal:

Log.Debug("This is a DEBUG level message."); 
+1

hmm ... parece que no está creando el archivo de registro en cualquier lugar, y no me sale ningún error? – Blankman

+2

Suena como un problema de permisos. Me gustaría asignar la configuración a una ruta absoluta fuera de su directorio web. A continuación, asegúrese de que el archivo de registro y la carpeta tengan permisos para permitir que el trabajador asp.net procese el acceso adecuado. –

+0

Para una ruta relativa, me gusta que el archivo de registro esté en el nivel del proyecto:

0

Creo que su muestra está guardando en sus carpetas de proyectos y, a menos que el usuario iis o .NET predeterminado tenga permiso de creación, no podrá crear la carpeta de registros.

Crearía la carpeta de registros primero y le daría permiso completo al usuario de iis para ver si se está creando el archivo de registro.

4

Para la carpeta de registro y cosas de archivos, vaya con @Bens answer.

Voy a comentar sobre la creación de la parte del registro, sin embargo. Imo no hay forma correcta manera. Al codificar los registradores manualmente, lo hago como lo hace:

ILog logger = LogManager.GetLogger(typeof(CCController)); 

porque es breve y conciso.

Dicho esto, no creo las instancias de registrador dentro de las clases actualmente, I let my IoC container inject it for me.

9

Log4net está guardando en su carpeta de proyectos. Algo como: \SolutionFolder\ProjectFolder\bin\SolutionConfiguration\logs\log-file.txt.

Dónde:

  • SolutionFolder es donde se guarda su solución
  • ProjectFolder es la carpeta en su proyecto vive en la solución y
  • SolutionConfiguration es la carpeta que contais todos los binarios de su proyecto (el predeterminado es Depurar o Liberar)

Espero que esto ayude!

42

Si desea que su archivo de registro para ser el lugar en un lugar específico que se decidirá en tiempo de ejecución puede ser el directorio de resultados del proyecto, entonces se puede configurar .config entrada de archivo de esa manera

<file type="log4net.Util.PatternString" value="%property{LogFileName}.txt" /> 

y luego en el código antes de llamar log4net configure, establecer el nuevo camino, como a continuación

log4net.GlobalContext.Properties["LogFileName"] = @"E:\\file1"; //log file path 
log4net.Config.XmlConfigurator.Configure(); 

Qué sencillo es? :)

+1

Gran truco, ayuda a poner toda la configuración en un solo lugar :) –

32

creará el archivo en el directorio raíz de su proyecto/solución.

puede especificar un lugar de elección en el web.config de la aplicación de la siguiente manera:

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value="c:/ServiceLogs/Olympus.Core.log" /> 
     <appendToFile value="true" /> 
     <rollingStyle value="Date" /> 
     <datePattern value=".yyyyMMdd.log" /> 
     <maximumFileSize value="5MB" /> 
     <staticLogFileName value="true" /> 
     <lockingModel type="log4net.Appender.RollingFileAppender+MinimalLock" /> 
     <maxSizeRollBackups value="-1" /> 
     <countDirection value="1" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date %-5level [%thread] %logger - %message%newline%exception" /> 
     </layout> 
    </appender> 

la etiqueta especifica la ubicación del archivo.

+7

+1 la única respuesta que responde directamente a la pregunta " ¿Dónde creará log4net este archivo de registro? " – Keith

+0

Hola Oladipo, para mí sin registro de definición de ruta se crea en la carpeta bin. – Pompair

2
FileAppender appender = repository.GetAppenders().OfType<FileAppender>().FirstOrDefault(); 
if (appender != null) 
    logger.DebugFormat("log file located at : {0}", appender.File); 
else 
    logger.Error("Could not locate fileAppender"); 
Cuestiones relacionadas