отключить ротацию журналов Java - PullRequest
3 голосов
/ 02 октября 2009

Я использую java.util.logging.Logger для входа в мое приложение:

    FileHandler fh=new FileHandler(this.todayFileName, 0, 1, true);

    fh.setFormatter(new SimpleFormatter());

    Logger.getLogger(rootLogger.getName()).setLevel(Level.ALL);

    Logger.getLogger(rootLogger.getName()).addHandler(fh); 

но это работает хорошо, за исключением того, что включена ротация журналов.

и я получаю файлы:

run.log run.log.1 run.log.2

я хочу получить только один файл журнала без вращения.

как мне это сделать?

Ответы [ 4 ]

1 голос
/ 21 декабря 2010

Помимо ответов, которые я уже дал, я бы поставил под сомнение ваше желание отключить логротацию. Существуют очень веские причины для ротации журналов (например, нехватка места на диске и т. Д.), Которые делают стандартную процедуру. Я бы сказал, исследовать, что заставляет вас хотеть отключить его и устранить эту необходимость. Например. если вы хотите иметь возможность легко извлекать информацию из журналов, возможно, вам следует рассмотреть возможность поиска пакета, который сделает это за вас (например, spunk или что-то в этом роде) и может нормально работать с повернутыми журналами. Также учтите, что ротация журналов легко настраивается, поэтому, возможно, вы просто захотите изменить конфигурацию ротации. Также учтите, что вы можете получить нужную информацию из журнала, отправленного для этой цели куда-то еще, и оставить вращающийся журнал в покое ...

И, в зависимости от операционной системы / системы конфигурации ротации журналов, вы, вероятно, сможете просто выключить ротацию прямо в операционной системе и не беспокоиться о своем коде.

1 голос
/ 16 октября 2009

Если вы запускаете одно и то же приложение более одного раза одновременно, java.util.logging создаст много файлов журнала, таких как run.log run.log.1 run.log.2

И вы уверены, что ваше приложение закрылось правильно, потому что у меня уже есть эта проблема. Так как мое приложение не закрылось правильно, когда я запустил свое приложение, это создало myApplication.log.1

1 голос
/ 13 июля 2010

Вы должны использовать конструктор FileHandle, который использует имя файла и логическое значение или тот, который использует только имя файла, таким образом, вы получите один файл журнала без вращения.

С уважением, Луис.

0 голосов
/ 02 октября 2009

Если вы должны использовать это, то попробуйте Integer.MAX_INT вместо 0. 0 может фактически рассматриваться как 0 байтов, и, таким образом, вызывать поворот каждый раз, когда вы его инициализируете.

Кстати, если вы хотите «только один файл, без поворота», используйте конструктор 1-arg, который просто берет имя файла, и это будет правильно.

...