Re[5]: Log4j RollingFileAppender
От: hrensgory Россия  
Дата: 20.01.10 19:03
Оценка: +2
Sovun пишет:
>
> H>Феерично. Клиент и сервер пишут лог в один файл? Зачем?
>
> Ничего фееричного.
> Сервер может запускаться как удалённо, так и на локальной машине.

На мой взгляд это слабоватый аргумент для того, чтобы мешать выхлоп двух
программ в одном файле.

--
WBR,
Serge.
Posted via RSDN NNTP Server 2.1 beta
Re[5]: Log4j RollingFileAppender
От: GarryIV  
Дата: 19.01.10 16:00
Оценка: +1
Здравствуйте, Sovun, Вы писали:

H>>Феерично. Клиент и сервер пишут лог в один файл? Зачем?


S>Ничего фееричного.

S>Сервер может запускаться как удалённо, так и на локальной машине.

И что на одной машине более одного лога никак не создать?
WBR, Igor Evgrafov
Log4j RollingFileAppender
От: Sovun  
Дата: 19.01.10 09:44
Оценка:
Нужно логировать в файл из двух классов.
В файле конфига добавляю аппендер конкретно для этих двух классов.
Оба открывают файл по записи. И в тот момент, когда размер файла превышает 50Кб один из классов пытается переименовать файл. Для этого файл данным классом закрывается.
Но остаётся открытым для другого класса, что не позволяет переименовать файл.
Roll не происходит.
Можно ли решить проблему средствами log4j, или нужно писать свой логгер и передавать его инстанс в оба класса?

log4j.rootLogger=INFO, console
#console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%-5p [%t] %C.%M():%-7L%m%n

#file
log4j.category.mypackage.class1 = info, consoleLogFile
log4j.category.mypackage.class2 = info, consoleLogFile
log4j.appender.consoleLogFile=ua.telecard.ATIS.router.util.log4j.RollFileAppender
log4j.appender.consoleLogFile.File=./logs/RouterConsole.log
log4j.apppeder.consoleLogFile.MaxFileSize=50KB
log4j.appender.consoleLogFile.BufferedIO=true
log4j.apppeder.consoleLogFile.MaxBackupIndex=2
log4j.appender.consoleLogFile.Threshold=DEBUG
log4j.appender.consoleLogFile.append=true
log4j.appender.consoleLogFile.layout=org.apache.log4j.PatternLayout
log4j.appender.consoleLogFile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %m
Re: Log4j RollingFileAppender
От: Blazkowicz Россия  
Дата: 19.01.10 10:42
Оценка:
Здравствуйте, Sovun, Вы писали:

S>Оба открывают файл по записи. И в тот момент, когда размер файла превышает 50Кб один из классов пытается переименовать файл. Для этого файл данным классом закрывается.

S>Но остаётся открытым для другого класса, что не позволяет переименовать файл.
Что-то я не понял. Для чего каким-то классам заниматся такой фигней, если RollingFileAppender именно для этого и реализован. Классы только пишут в лог, а log4j уже разрулит и синхронизирует roll over to backup files.
Re[2]: Log4j RollingFileAppender
От: Sovun  
Дата: 19.01.10 12:25
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>Здравствуйте, Sovun, Вы писали:


S>>Оба открывают файл по записи. И в тот момент, когда размер файла превышает 50Кб один из классов пытается переименовать файл. Для этого файл данным классом закрывается.

S>>Но остаётся открытым для другого класса, что не позволяет переименовать файл.
B>Что-то я не понял. Для чего каким-то классам заниматся такой фигней, если RollingFileAppender именно для этого и реализован. Классы только пишут в лог, а log4j уже разрулит и синхронизирует roll over to backup files.

В том и дело.

Клиент-сервер приложение.
Запускается сервер — log4j открывает файл по записи.
Запускается клиент — аналогично.
И ни 1 поток не может получить монопольный доступ к файлу, чтобы сделать переименовать файл в бэкап при превышении размера.
Re[3]: Log4j RollingFileAppender
От: hrensgory Россия  
Дата: 19.01.10 13:10
Оценка:
Sovun пишет:
>
> Клиент-сервер приложение.
> Запускается сервер — log4j открывает файл по записи.
> Запускается клиент — аналогично.
> И ни 1 поток не может получить монопольный доступ к файлу, чтобы сделать
> переименовать файл в бэкап при превышении размера.

Феерично. Клиент и сервер пишут лог в один файл? Зачем?

--
WBR,
Serge.
Posted via RSDN NNTP Server 2.1 beta
Re[4]: Log4j RollingFileAppender
От: Sovun  
Дата: 19.01.10 13:22
Оценка:
Здравствуйте, hrensgory, Вы писали:

H>Sovun пишет:

>>
>> Клиент-сервер приложение.
>> Запускается сервер — log4j открывает файл по записи.
>> Запускается клиент — аналогично.
>> И ни 1 поток не может получить монопольный доступ к файлу, чтобы сделать
>> переименовать файл в бэкап при превышении размера.

H>Феерично. Клиент и сервер пишут лог в один файл? Зачем?


H>--

H>WBR,
H>Serge.

Ничего фееричного.
Сервер может запускаться как удалённо, так и на локальной машине.
Re: Log4j RollingFileAppender
От: злая и глупая Украина  
Дата: 21.01.10 06:10
Оценка:
Здравствуйте, Sovun, Вы писали:

S>Нужно логировать в файл из двух классов.

S>В файле конфига добавляю аппендер конкретно для этих двух классов.
S>Оба открывают файл по записи. И в тот момент, когда размер файла превышает 50Кб один из классов пытается переименовать файл. Для этого файл данным классом закрывается.
S>Но остаётся открытым для другого класса, что не позволяет переименовать файл.
S>Roll не происходит.
S>Можно ли решить проблему средствами log4j, или нужно писать свой логгер и передавать его инстанс в оба класса?

у меня было нечто похожее, когда log4j лочил логфайл, а мне нужно было его перенести (бэкапнуть) в другое место... я делала log.shutdown() перед переносом, и файлик отпускался
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.