Принудительно запустить Log4Net RollingFileAppender
-
03-07-2019 - |
Вопрос
Согласно документации Log4Net , RollingFileAppender будет катить файл журнала только тогда, когда сообщение зарегистрировано. Мне нужно войти в этот файл, но импортировать его каждый день в другую базу данных. Я не могу использовать приложение базы данных, потому что мне нужны файлы, и мне нужно перевести данные из файла журнала в базу данных (это не прямая копия). Проблема в том, что если после полуночи нет активности журнала, журнал не катится. Импортер ищет файл предыдущих дней (и я не могу изменить этот код), поэтому, если нет активности, а журнал не свернут, импортер не находит файл. Есть ли способ заставить бревно катиться в полночь, не имея другой нити, которая просыпается и заставляет его катиться? Может ли пользовательский appender сделать это? Я хотел бы избежать этого, если это возможно.
Решение
Напишите службу Windows, которая запускает событие сразу после полуночи и записывает фиктивную запись в журнале, используя ту же конфигурацию.
Другие советы
Вы должны подумать об этом с точки зрения вопроса "какие пути кода ведут к процедуре опрокидывания?". Как только вы узнаете, как выполняется эта процедура, вы можете решить, как ее запустить.
Может ли это сделать специальный пользователь? Конечно, но код в приложении не будет работать, пока вы не войдете в него, и вы вернетесь к исходной точке.
Что касается вопроса "Есть ли какой-либо способ заставить журнал работать в полночь, не имея другого потока, который просыпается и заставляет его вращаться?", я бы сказал, что этот вопрос эквивалентен "Возможно ли это?" заставить журнал катиться в полночь без запуска какого-либо кода? Я не пытаюсь быть смешным или оскорблять вас, я просто пытаюсь сформулировать вопрос таким образом, который, я надеюсь, ответит на него для вас. : -)
Самый простой способ решить эту проблему - проснуться и войти в систему, чтобы заставить файл вращаться.
Согласно документации RollingFileAppender вы можете установить его чтобы катиться ежедневно, посмотрите эту конфигурацию:
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="logfile" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyyMMdd" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>