Похоже, это было повышено до элемента конфигурации: <datePattern value = "dd.MM.yyyy'.log '" /> Ура!
longda
3
@mstaessen <preserveLogFileNameExtension value="true" />- правильный синтаксис, и это отличный ответ. Могу я спросить, как произошла потеря?
Ларри Би,
1
Если я правильно помню, это было так. При запуске log4net сгенерирует первое имя файла в повторяющейся последовательности. Он обнаружит, что этот файл уже существует, и затем решит выполнить откат ко второму файлу, но, когда он уже существует, он не решает выполнить откат, а вместо этого очищает его и перезаписывает все во втором файле журнала. Это проходит незаметно до тех пор, пока вам не понадобятся журналы очищенного периода ...
Я думаю, вам следует выделить основной момент, какой параметр решить проблему, как это сделал @Mun. Однако я тоже проголосовал за ваш ответ.
RDeveloper
1
Это был элемент datePattern в сочетании с элементом staticLogFileName (и обратите внимание на атрибут value для элемента file), который сработал для меня
Michhes
Полный ответ!
Нагеш
32
Для RollingLogFileAppender вам также потребуются эти элементы и значения:
Это работает, но добавляет дату после расширения файла. Например, я получаю файлы журнала, такие как Error.log20111104 - Кто-нибудь знает, как немного лучше отформатировать имя файла?
для чего используется staticLogFileName? Я только хочу, чтобы файл журнала был преобразован в новое имя после окончания дня. Я хочу использовать монитор журнала, который каждый раз смотрит на определенное.
Вс,
22
Используя Log4Net 1.2.13, мы используем следующие параметры конфигурации, чтобы указать дату и время в имени файла.
Если размер файла вызывает беспокойство, следующее разрешает 500 файлов размером 5 МБ до появления нового дня. CountDirection позволяет нумерацию устаревших файлов по возрастанию или убыванию.
Проблема с другими комбинациями параметров заключалась в том, что в последнем файле не было шаблона времени, или добавлялся шаблон времени, .log20171215который создавал новое время файла (и новый тип файла! ) Каждый день - или возникали обе проблемы.
Теперь с этой настройкой вы получаете такие файлы:
LOG4NET_Sample_Activity-20171215.log
чего я и хотел.
Подвести итоги:
Не указывайте шаблон даты в <file value=...атрибуте, просто определите его в datePattern.
Убедитесь, что для атрибута preserveLogFileNameExtensionvalue установлено значение true.
Убедитесь , что у вас есть staticLogFileNameзначение набор для false.
почему есть %date{yyyyMM}и value="ddMMyyyy" ? какой шаблон даты вступления в силу?
Allan Ruin
Я думаю, что datePattern используется для имени файла, но% date {yyyyMM} - для родительского каталога (я так и хотел)
Fourat
Атрибут datePattern устанавливает скользящий период для Date RollingStyle. См. Logging.apache.org/log4net/release/config-examples.html в разделе RollingFileAppender. «Например, шаблон даты« yyyyMMdd »будет катиться каждый день. См. Список доступных шаблонов в System.Globalization.DateTimeFormatInfo».
Райан Баддиком
@rbuddicom да, но вопрос в том, как сохранить расширение файла.
Fourat
Я знаю, Аллан поставил под сомнение цель 'value = "ddMMyyyy". Ваш комментарий «Я думаю, что datePattern для имени файла» неверен в этом отношении.
Райан Буддом
0
Расширенный раздел конфигурации в предыдущем ответе с
......<rollingStyle value="Composite"/>......
перечисленные работы, но мне не пришлось использовать
<staticLogFileName value="false"/>
, Я думаю, что RollingAppender должен (логически) игнорировать этот параметр, поскольку по определению файл перестраивается каждый день при перезапуске / повторном использовании приложения. Возможно, это имеет значение для немедленного опрокидывания КАЖДОГО при запуске приложения.
Для меня это не сработало бы без <staticLogFileName value = "false" />
nurettin
мне тоже пришлось установить staticLogFileName в false, иначе он не регистрировался
oonyalo
0
Я переместил конфигурацию в код, чтобы облегчить модификацию из CI с использованием системной переменной. Я использовал этот код для имени файла, и результат был 'Log_03-23-2020.log'
Ответы:
В файле конфигурации Log4net используйте следующий параметр с RollingFileAppender:
источник
<preserveLogFileNameExtension value="true" />
- правильный синтаксис, и это отличный ответ. Могу я спросить, как произошла потеря?источник
Для RollingLogFileAppender вам также потребуются эти элементы и значения:
источник
Используя Log4Net 1.2.13, мы используем следующие параметры конфигурации, чтобы указать дату и время в имени файла.
<file type="log4net.Util.PatternString" value="E:/logname-%utcdate{yyyy-MM-dd}.txt" />
Что предоставит файлы в следующем соглашении:
logname-2015-04-17.txt
При этом, как правило, лучше иметь следующее, чтобы гарантировать, что вы ведете 1 журнал в день.
Если размер файла вызывает беспокойство, следующее разрешает 500 файлов размером 5 МБ до появления нового дня. CountDirection позволяет нумерацию устаревших файлов по возрастанию или убыванию.
источник
В итоге я использовал (обратите внимание на имя файла '.log' и одинарные кавычки вокруг 'myfilename_'):
Это дает мне:
источник
preserveLogFileNameExtension
не работает с более ранними версиями log4net (например, v1.2.10), как описано здесьЯ перепробовал все ответы, но всегда чего-то не хватало и не работало так, как ожидалось для меня.
Затем я немного поэкспериментировал с подсказками, приведенными в каждом ответе, и добился успеха со следующей настройкой:
Проблема с другими комбинациями параметров заключалась в том, что в последнем файле не было шаблона времени, или добавлялся шаблон времени,
.log20171215
который создавал новое время файла (и новый тип файла! ) Каждый день - или возникали обе проблемы.Теперь с этой настройкой вы получаете такие файлы:
LOG4NET_Sample_Activity-20171215.log
чего я и хотел.
Подвести итоги:
Не указывайте шаблон даты в
<file value=...
атрибуте, просто определите его вdatePattern
.Убедитесь, что для атрибута
preserveLogFileNameExtension
value установлено значениеtrue
.Убедитесь , что у вас есть
staticLogFileName
значение набор дляfalse
.Установите значение
rollingStyle
атрибута на .Date
источник
Чтобы сохранить расширение файла:
источник
%date{yyyyMM}
иvalue="ddMMyyyy"
? какой шаблон даты вступления в силу?Расширенный раздел конфигурации в предыдущем ответе с
перечисленные работы, но мне не пришлось использовать
, Я думаю, что RollingAppender должен (логически) игнорировать этот параметр, поскольку по определению файл перестраивается каждый день при перезапуске / повторном использовании приложения. Возможно, это имеет значение для немедленного опрокидывания КАЖДОГО при запуске приложения.
источник
Я переместил конфигурацию в код, чтобы облегчить модификацию из CI с использованием системной переменной. Я использовал этот код для имени файла, и результат был 'Log_03-23-2020.log'
источник