Parece que isso foi promovido para um elemento de configuração: <datePattern value = "dd.MM.aaa'.log '" /> Cheers!
Longda
3
@mstaessen <preserveLogFileNameExtension value="true" />é a sintaxe correta e esta é uma ótima resposta. Como ocorreu a perda, posso perguntar?
Larry B
1
Se bem me lembro, foi assim. Na inicialização, o log4net geraria o primeiro nome do arquivo na seqüência contínua. Ele detectaria que esse arquivo já existe e decidiria rolar para o segundo arquivo, mas quando esse também já existir, ele não decide rolar, mas o limpa e substitui tudo nesse segundo arquivo de log. Passa totalmente despercebido até que você precise de logs do período de tempo limpo ...
Eu acho que você deve destacar o ponto principal de qual parâmetro resolver o problema como o @Mun fez. No entanto, também votei na sua resposta.
RDeveloper 24/02
1
Foi o elemento datePattern, em conjunto com o elemento staticLogFileName (e observe o atributo de valor para o elemento de arquivo) que funcionou para mim
Michhes
A resposta completa!
Nagesh 25/06
32
Para um RollingLogFileAppender, você também precisa desses elementos e valores:
Isso funciona, mas acrescenta a data após a extensão do arquivo. Por exemplo, recebo arquivos de log como Error.log20111104 - Alguém sabe como formatar o nome do arquivo um pouco melhor?
para que o staticLogFileName é usado? Eu só quero que o arquivo de log seja convertido em um novo nome depois que o dia terminar. Quero usar um monitor de log que analise um específico a cada vez.
Sun
21
Usando o Log4Net 1.2.13, usamos as seguintes definições de configuração para permitir data e hora no nome do arquivo.
Se o tamanho do arquivo for uma preocupação, o seguinte permitirá 500 arquivos de 5 MB até que um novo dia comece. CountDirection permite numeração crescente ou decrescente de arquivos que não são mais atuais.
O problema com outras combinações de parâmetros era que o arquivo mais recente não tinha o padrão de hora ou que o padrão de hora foi anexado, o .log20171215que criou uma nova hora de arquivo (e um novo tipo de arquivo! ) Todos os dias - ou os dois problemas apareciam.
Agora, com essa configuração, você está obtendo arquivos como este:
LOG4NET_Sample_Activity-20171215.log
o que eu queria.
Para resumir:
Não coloque o padrão de data no <file value=...atributo, apenas defina-o no datePattern.
Verifique se você tem o preserveLogFileNameExtension atributo value definido como true.
Verifique se você tem o staticLogFileName valor definido como false.
por que existem %date{yyyyMM}e value="ddMMyyyy" ? qual é o padrão de data efetivo?
Allan Ruin
Acho datePattern é para o nome do arquivo, mas% date {YYYYMM} é para o diretório pai (eu queria que fosse assim)
Fourat
O atributo datePattern define o período de rolagem para Date rollingStyle. Consulte logging.apache.org/log4net/release/config-examples.html em RollingFileAppender. "Por exemplo, um padrão de data de" aaaamMMdd "rolará todos os dias. Consulte System.Globalization.DateTimeFormatInfo para obter uma lista dos padrões disponíveis."
Ryan Buddicom
@rbuddicom sim, mas a questão é sobre como preservar a extensão do arquivo.
Fourat
Eu sei, Allan questionou o propósito de 'value = "ddMMyyyy"'. O seu comentário "Acho que datePattern é para o nome do arquivo" está incorreto nesse sentido.
Ryan Buddicom
0
A seção de configuração estendida em uma resposta anterior com
......<rollingStyle value="Composite"/>......
trabalhos listados, mas não precisei usar
<staticLogFileName value="false"/>
. Eu acho que o RollingAppender deve (logicamente) ignorar essa configuração, pois, por definição, o arquivo é reconstruído todos os dias quando o aplicativo é reiniciado / reutilizado. Talvez isso importe para substituição imediata TODAS as vezes o aplicativo é iniciado.
Para mim, isso não funcionaria sem a <valor staticLogFileName = "false" />
nurettin
me bem, tinha que definir staticLogFileName para false de outra forma não seria log
oonyalo
0
Mudei a configuração para o código para facilitar a modificação do CI usando a variável de sistema. Usei esse código para o nome do arquivo e o resultado é 'Log_03-23-2020.log'
Respostas:
No seu arquivo de configuração Log4net, use o seguinte parâmetro com o RollingFileAppender:
fonte
<preserveLogFileNameExtension value="true" />
é a sintaxe correta e esta é uma ótima resposta. Como ocorreu a perda, posso perguntar?fonte
Para um RollingLogFileAppender, você também precisa desses elementos e valores:
fonte
Usando o Log4Net 1.2.13, usamos as seguintes definições de configuração para permitir data e hora no nome do arquivo.
<file type="log4net.Util.PatternString" value="E:/logname-%utcdate{yyyy-MM-dd}.txt" />
O que fornecerá arquivos na seguinte convenção:
logname-2015-04-17.txt
Com isso, geralmente é melhor ter o seguinte para garantir que você esteja mantendo um log por dia.
Se o tamanho do arquivo for uma preocupação, o seguinte permitirá 500 arquivos de 5 MB até que um novo dia comece. CountDirection permite numeração crescente ou decrescente de arquivos que não são mais atuais.
fonte
Acabei usando (observe o nome do arquivo '.log' e as aspas simples em torno de 'myfilename_'):
Isso me dá:
fonte
preserveLogFileNameExtension
não funciona para versões anteriores do log4net (por exemplo v1.2.10) como é descrito aquiEu tentei todas as respostas, mas sempre havia algo faltando e não funcionando como esperado para mim.
Depois, experimentei um pouco as dicas fornecidas em cada resposta e obtive sucesso com a seguinte configuração:
O problema com outras combinações de parâmetros era que o arquivo mais recente não tinha o padrão de hora ou que o padrão de hora foi anexado, o
.log20171215
que criou uma nova hora de arquivo (e um novo tipo de arquivo! ) Todos os dias - ou os dois problemas apareciam.Agora, com essa configuração, você está obtendo arquivos como este:
LOG4NET_Sample_Activity-20171215.log
o que eu queria.
Para resumir:
Não coloque o padrão de data no
<file value=...
atributo, apenas defina-o nodatePattern
.Verifique se você tem o
preserveLogFileNameExtension
atributo value definido comotrue
.Verifique se você tem o
staticLogFileName
valor definido comofalse
.Defina o valor do
rollingStyle
atributo como .Date
fonte
Para preservar a extensão do arquivo:
fonte
%date{yyyyMM}
evalue="ddMMyyyy"
? qual é o padrão de data efetivo?A seção de configuração estendida em uma resposta anterior com
trabalhos listados, mas não precisei usar
. Eu acho que o RollingAppender deve (logicamente) ignorar essa configuração, pois, por definição, o arquivo é reconstruído todos os dias quando o aplicativo é reiniciado / reutilizado. Talvez isso importe para substituição imediata TODAS as vezes o aplicativo é iniciado.
fonte
Mudei a configuração para o código para facilitar a modificação do CI usando a variável de sistema. Usei esse código para o nome do arquivo e o resultado é 'Log_03-23-2020.log'
fonte