Anexar atual Data para arquivo de log com Log4Net
Pergunta
Tudo que eu quero fazer é acrescentar a data atual e tempo para o meu arquivo de log, por exemplo:
"export_(Wed_Feb_21_2009_at_1_36_41PM)"
Aqui está a minha configuração atual do meu app.config
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="c:\export.txt" />
<appendToFile value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message %stackTrace%newline" />
</layout>
</appender>
É anexando a data para o meu arquivo de log possível, ou é uma daquelas coisas que eu preciso fazer no código e não de configuração?
Solução
Adicione o seguinte ao seu arquivo de configuração
<appender name="rollingFile" type="log4net.Appender.RollingFileAppender,log4net">
<param name="File" value="c:\\ProjectX\\Log\\log.txt"/>
<param name="AppendToFile" value="true"/>
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
<param name="RollingStyle" value="Date"/>
<param name="DatePattern" value="yyyy.MM.dd"/>
<param name="StaticLogFileName" value="true"/>
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%date [%thread] %-5level %logger - %message%newline"/>
</layout>
</appender>
Outras dicas
Para produzir um nome de arquivo como:
log_2013-12-19.txt
Faça alterações
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="log_"/>
<param name="RollingStyle" value="Date"/>
<param name="DatePattern" value="yyyy-MM-dd.\tx\t" />
<param name="StaticLogFileName" value="false"/>
</appender>
Observe param "DatePattern" onde. \ Tx \ t faz com que o arquivo .txt extensão de nome. Se você fornecer .txt em vez de. \ Tx \ t, então este iria salvar nome de arquivo com extensão .PxP se o tempo é PM ou .AxA em caso de AM. então eu usei \ t para impor ao caráter de gravação em vez do padrão. O tempo também pode ser acrescentado e que nunca padrão de tempo necessário.
Então, isso pode ser realmente o que Philipp M queria.
Para aqueles que estão interessados, aqui está a solução:
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="C:\\Users\\chris\\Documents\\log_.txt"/>
<param name="RollingStyle" value="Date"/>
<param name="DatePattern" value="_(yyyy.MM.dd-hh_mm_ss)"/>
<param name="StaticLogFileName" value="false"/>
<maximumFileSize value="100KB" />
<appendToFile value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message %stackTrace%newline" />
</layout>
</appender>
e o teste de unidade que verifica o seguinte:
[Test]
public void TestLogger()
{
logger.Info("Start Log");
for (int i = 0; i < 2500; i++)
{
logger.Info(i);
}
logger.Info("End Log Log");
}
Ela produz o seguinte resultado:
log_.txt_(2009.02.19-01_16_34)
Não é realmente o que eu queria, mas melhor do que o que eu tinha antes.
Se você quiser usar um sufixo .log (para gerar um arquivo como myLogPrefix.20160309.log) use:
<appender name="GeofenceFileAppender" type="log4net.Appender.RollingFileAppender">
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<file type="log4net.Util.PatternString" value="C:\\Logs\\myLogPrefix" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value=".yyyyMMdd.lo'g'" />
<staticLogFileName value ="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger – %message%newline" />
</layout>
</appender>
As armadilhas são as staticLogFileName = false
que permite gerar pacotes cumulativos na mosca (em vez de ter que reiniciar o serviço \ server) eo 'g'
estranho na datepattern
desde g
é um personagem mágico no datePattern
. Não há boa documentação no site log4net para estudar este, por isso é realmente sabedoria adquirida a partir de tentativa e erro e lavagem experiências de outras pessoas.
Use StaticLogFileName :
<param name="StaticLogFileName" value="true"/>