Sovun пишет: > > H>Феерично. Клиент и сервер пишут лог в один файл? Зачем? > > Ничего фееричного. > Сервер может запускаться как удалённо, так и на локальной машине.
На мой взгляд это слабоватый аргумент для того, чтобы мешать выхлоп двух
программ в одном файле.
Здравствуйте, Sovun, Вы писали:
H>>Феерично. Клиент и сервер пишут лог в один файл? Зачем?
S>Ничего фееричного. S>Сервер может запускаться как удалённо, так и на локальной машине.
И что на одной машине более одного лога никак не создать?
Нужно логировать в файл из двух классов.
В файле конфига добавляю аппендер конкретно для этих двух классов.
Оба открывают файл по записи. И в тот момент, когда размер файла превышает 50Кб один из классов пытается переименовать файл. Для этого файл данным классом закрывается.
Но остаётся открытым для другого класса, что не позволяет переименовать файл.
Roll не происходит.
Можно ли решить проблему средствами log4j, или нужно писать свой логгер и передавать его инстанс в оба класса?
Здравствуйте, Sovun, Вы писали:
S>Оба открывают файл по записи. И в тот момент, когда размер файла превышает 50Кб один из классов пытается переименовать файл. Для этого файл данным классом закрывается. S>Но остаётся открытым для другого класса, что не позволяет переименовать файл.
Что-то я не понял. Для чего каким-то классам заниматся такой фигней, если RollingFileAppender именно для этого и реализован. Классы только пишут в лог, а log4j уже разрулит и синхронизирует roll over to backup files.
Здравствуйте, Blazkowicz, Вы писали:
B>Здравствуйте, Sovun, Вы писали:
S>>Оба открывают файл по записи. И в тот момент, когда размер файла превышает 50Кб один из классов пытается переименовать файл. Для этого файл данным классом закрывается. S>>Но остаётся открытым для другого класса, что не позволяет переименовать файл. B>Что-то я не понял. Для чего каким-то классам заниматся такой фигней, если RollingFileAppender именно для этого и реализован. Классы только пишут в лог, а log4j уже разрулит и синхронизирует roll over to backup files.
В том и дело.
Клиент-сервер приложение.
Запускается сервер — log4j открывает файл по записи.
Запускается клиент — аналогично.
И ни 1 поток не может получить монопольный доступ к файлу, чтобы сделать переименовать файл в бэкап при превышении размера.
Sovun пишет: > > Клиент-сервер приложение. > Запускается сервер — log4j открывает файл по записи. > Запускается клиент — аналогично. > И ни 1 поток не может получить монопольный доступ к файлу, чтобы сделать > переименовать файл в бэкап при превышении размера.
Феерично. Клиент и сервер пишут лог в один файл? Зачем?
Здравствуйте, hrensgory, Вы писали:
H>Sovun пишет: >> >> Клиент-сервер приложение. >> Запускается сервер — log4j открывает файл по записи. >> Запускается клиент — аналогично. >> И ни 1 поток не может получить монопольный доступ к файлу, чтобы сделать >> переименовать файл в бэкап при превышении размера.
H>Феерично. Клиент и сервер пишут лог в один файл? Зачем?
H>-- H>WBR, H>Serge.
Ничего фееричного.
Сервер может запускаться как удалённо, так и на локальной машине.
Здравствуйте, Sovun, Вы писали:
S>Нужно логировать в файл из двух классов. S>В файле конфига добавляю аппендер конкретно для этих двух классов. S>Оба открывают файл по записи. И в тот момент, когда размер файла превышает 50Кб один из классов пытается переименовать файл. Для этого файл данным классом закрывается. S>Но остаётся открытым для другого класса, что не позволяет переименовать файл. S>Roll не происходит. S>Можно ли решить проблему средствами log4j, или нужно писать свой логгер и передавать его инстанс в оба класса?
у меня было нечто похожее, когда log4j лочил логфайл, а мне нужно было его перенести (бэкапнуть) в другое место... я делала log.shutdown() перед переносом, и файлик отпускался